// 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 त्रुटियाँ
।