PDA

View Full Version : چک کردن وجود یک جدول در mysql



rezarss
سه شنبه 26 بهمن 1389, 21:50 عصر
اینو به زبان php ترجمه کنید:

اگر جدول x وجود نداشت آنگاه
echo "there is not table x";

cpuman
سه شنبه 26 بهمن 1389, 22:02 عصر
function table_exists($tablename) {

$res = mysql_query("
SELECT COUNT(*) AS count
FROM information_schema.tables
WHERE table_schema = '$database'
AND table_name = '$tablename'
");

return mysql_result($res, 0) == 1;

}


if(table_exists('my_table_name')) {
// do something
}
else {
// do something else
}

MMSHFE
چهارشنبه 27 بهمن 1389, 10:29 صبح
با سلام، ممكنه بنا به يكسري مسائل امنيتي روي سرور نتونيد به INFORMATION_SCHEMA دسترسي داشته باشيد. در چنين مواردي اين تابع به كارتون مياد:


function table_exists($db,$table)
{
mysql_connect('localhost','root','');
mysql_select_db($db);
mysql_query("select * from `$table`");
$error=strtolower(mysql_error());
if(substr($error,0,5)=='table' && substr(mysql_error(),-13)=='doesn\'t exist')
{
return 0;
}
return 1;
}

روش كاربرد:


if(table_exists('mydb','mytable')==1)
{
//work with table
}

توضيح: از mysql_error به شكل بهينه استفاده كنيد!
موفق و مؤيد باشيد.

jirjirakk
چهارشنبه 27 بهمن 1389, 11:43 صبح
در تابعی که نوشته اید به علت استفاده از یک SELECT ساده در صورتی که جدول وجود داشته باشد و اطلاعات جدول هم بسیار زیاد باشد
منابع زیادی از سیستم به هدر خواهد رفت

راه حل : یک Limit اخر دستور اس کیو ال قرار دهید تا تابع سبک-تر شود