जवाबों:
मैं इसके लिए PDO सिंटैक्स नहीं जानता, लेकिन यह बहुत सीधा-सीधा लगता है:
$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;
mysql_*
काम करता है, वे कर रहे हैं आधिकारिक तौर पर पदावनत , अब और नहीं बनाए रखा जाएगा और हटाया भविष्य में। भविष्य में अपने प्रोजेक्ट की कार्यक्षमता सुनिश्चित करने के लिए आपको अपने कोड को PDO या MySQLi से अपडेट करना चाहिए ।
यदि आप MySQL 5.0 और बाद में उपयोग कर रहे हैं, तो आप कोशिश कर सकते हैं:
SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = '[database name]'
AND table_name = '[table name]';
किसी भी परिणाम का संकेत तालिका मौजूद है।
से: http://www.electrictoolbox.com/check-if-mysql-table-exists/
Mysqli का उपयोग करके मैंने निम्नलिखित फ़ंक्शन बनाया है। मान लें कि आपके पास mysqli का उदाहरण है जिसे $ con कहा जाता है।
function table_exist($table){
global $con;
$table = $con->real_escape_string($table);
$sql = "show tables like '".$table."'";
$res = $con->query($sql);
return ($res->num_rows > 0);
}
आशा करता हूँ की ये काम करेगा।
चेतावनी: @jcaron द्वारा आत्महत्या के रूप में यह फ़ंक्शन sqlinjection अटैक के लिए असुरक्षित हो सकता है, इसलिए सुनिश्चित करें कि आपका संस्करण $table
साफ है या बेहतर उपयोग किए गए पैरामीटर भी हैं।
यह किसी को भी इस सवाल की तलाश में आता है, तो बस पोस्ट किया जाता है। भले ही इसका जवाब थोड़ा सा दिया गया है। कुछ उत्तर इसकी आवश्यकता से अधिक जटिल बनाते हैं।
Mysql के लिए * मैंने इस्तेमाल किया:
if (mysqli_num_rows(
mysqli_query(
$con,"SHOW TABLES LIKE '" . $table . "'")
) > 0
or die ("No table set")
){
पीडीओ में मैंने इस्तेमाल किया:
if ($con->query(
"SHOW TABLES LIKE '" . $table . "'"
)->rowCount() > 0
or die("No table set")
){
इस के साथ मैं या तो में शर्त धक्का या। और मेरी जरूरतों के लिए मुझे केवल मरने की जरूरत है। हालांकि आप सेट या अन्य चीजों के लिए कर सकते हैं। कुछ इफ / इफ इफ इफ़ेक्ट / वरना पसंद कर सकते हैं। जिसे तब हटा देना है या फिर आपूर्ति करना है यदि / और यदि / तो।
यहां मेरा समाधान है जिसे मैं संग्रहीत प्रक्रियाओं का उपयोग करते समय पसंद करता हूं। वर्तमान डेटाबेस में तालिका की जाँच के लिए कस्टम mysql फ़ंक्शन मौजूद है।
delimiter $$
CREATE FUNCTION TABLE_EXISTS(_table_name VARCHAR(45))
RETURNS BOOLEAN
DETERMINISTIC READS SQL DATA
BEGIN
DECLARE _exists TINYINT(1) DEFAULT 0;
SELECT COUNT(*) INTO _exists
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = _table_name;
RETURN _exists;
END$$
SELECT TABLE_EXISTS('you_table_name') as _exists
बड़े डेटाबेस पर "शो टेबल" धीमी हो सकती है, मैं "DESCRIBE" का उपयोग करने की सलाह देता हूं और परिणाम के रूप में सही / गलत होने पर जांच करता हूं
$tableExists = mysqli_query("DESCRIBE `myTable`");
$q = "SHOW TABLES";
$res = mysql_query($q, $con);
if ($res)
while ( $row = mysql_fetch_array($res, MYSQL_ASSOC) )
{
foreach( $row as $key => $value )
{
if ( $value = BTABLE ) // BTABLE IS A DEFINED NAME OF TABLE
echo "exist";
else
echo "not exist";
}
}
ज़ेंड फ्रेमवर्क
public function verifyTablesExists($tablesName)
{
$db = $this->getDefaultAdapter();
$config_db = $db->getConfig();
$sql = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{$config_db['dbname']}' AND table_name = '{$tablesName}'";
$result = $db->fetchRow($sql);
return $result;
}
यदि ऐसा करने की इच्छा सशर्त तालिका निर्माण की है, तो 'सृजन कार्य यदि आवश्यक नहीं है' नौकरी के लिए आदर्श लगता है। जब तक मुझे यह पता नहीं चला, मैंने ऊपर 'DESCRIBE' पद्धति का उपयोग किया। यहाँ अधिक जानकारी: MySQL "सृजन नहीं तो मुश्किल है" -> 1050 त्रुटि