Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं कैसे जांच सकता हूं कि PHP के साथ एक MySQL तालिका मौजूद है या नहीं?

// Select 1 from table_name will return false if the table does not exist.
$val = mysql_query('select 1 from `table_name` LIMIT 1');

if($val !== FALSE)
{
   //DO SOMETHING! IT EXISTS!
}
else
{
    //I can't find it...
}

बेशक, यह PHP मुहावरे की तुलना में अधिक पाइथोनिक है, लेकिन दूसरी ओर, आपको अत्यधिक मात्रा में अतिरिक्त डेटा से निपटने के बारे में चिंता करने की ज़रूरत नहीं है।

संपादित करें

इसलिए, जब तक मैं यह संदेश लिख रहा हूं, इस उत्तर को कम से कम दो बार नीचे चिह्नित किया गया है। यह मानते हुए कि मैंने कुछ गंभीर त्रुटि की है, मैं गया और मैंने कुछ बेंचमार्क चलाए। , और यही मैंने पाया कि जब तालिका मौजूद नहीं होती है तो मेरा समाधान निकटतम विकल्प की तुलना में 10% से अधिक तेज होता है, और तालिका के मौजूद होने पर यह 25% से अधिक तेज होता है:

:::::::::::::::::::::::::BEGINNING NON-EXISTING TABLE::::::::::::::::::::::::::::::
23.35501408577 for bad select
25.408507823944 for select from schema num rows -- calls mysql_num_rows on select... from information_schema.
25.336688995361 for select from schema fetch row -- calls mysql_fetch_row on select... from information_schema result
50.669058799744 for SHOW TABLES FROM test
:::::::::::::::::::::::::BEGINNING EXISTING TABLE::::::::::::::::::::::::::::::
15.293519973755 for good select
20.784908056259 for select from schema num rows
21.038464069366 for select from schema fetch row
50.400309085846 for SHOW TABLES FROM test

मैंने इसे डीईएससी के खिलाफ चलाने की कोशिश की, लेकिन मेरे पास 276 सेकेंड के बाद टाइमआउट था (मेरे उत्तर के लिए 24 सेकेंड, 276 एक गैर मौजूदा तालिका के विवरण को पूरा करने में विफल)।

अच्छे उपाय के लिए, मैं एक स्कीमा के खिलाफ बेंचमार्किंग कर रहा हूं जिसमें केवल चार टेबल हैं और यह लगभग ताजा MySQL इंस्टॉल है (यह अब तक का एकमात्र डेटाबेस है)। निर्यात देखने के लिए, यहां देखें ।

और इसके अलावा

यह विशेष समाधान भी अधिक डेटाबेस स्वतंत्र है क्योंकि वही क्वेरी PgSQL और Oracle में काम करेगी।

अंत में

mysql_query() उन त्रुटियों के लिए FALSE लौटाता है जो "यह तालिका मौजूद नहीं है" नहीं हैं।

यदि आपको यह गारंटी देने की आवश्यकता है कि तालिका नहीं मौजूद है, mysql_errno() का उपयोग करें त्रुटि कोड प्राप्त करने और इसकी तुलना प्रासंगिक MySQL त्रुटियाँ



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सीएसवी फ़ाइल आयात करते समय सीएसवी इनपुट में mysql अमान्य कॉलम गिनती

  2. mysql संग्रहीत कार्यविधि:एक सीमा विवरण में घोषित vars का उपयोग करके एक त्रुटि देता है

  3. क्लाउड में अपने डेटाबेस क्लस्टर तक सुरक्षित पहुंच के लिए OpenVPN का उपयोग करना

  4. टेलीफोन नंबर और पते के लिए mysql डेटाटाइप

  5. RMySQL dbWriteTable फ़ील्ड के साथ। प्रकार