[英]MySQL check if table already exists
我的MySQL數據庫中有幾個表。 它們具有某種命名約定,例如。
tbl_1_alpha
tbl_1_beta
tbl_1_alpha2
tbl_2_beta
tbl_3_alpha2
現在,我想檢查數據庫中是否存在給定的表。
例如。
$name = 'tbl_1_alpha'
->存在 $name = 'tbl_1_alpha2'
->存在 $name = 'tbl_1_alpha3'
->不存在 為了得到結果,我使用了以下功能
public function exists($name)
{
$query = "SHOW TABLES LIKE '$name%'";
$result = $this->db->query($query);
if ($result->num_rows() > 0) {
return true;
}
return false;
}
對於給定的$name
= tbl_1_alpha
它返回true
。 但是,當我刪除表tbl_1_alpha
它仍然返回true
因為它將名稱與tbl_1_alpha2
匹配。 我該如何避免呢?
誰能幫我匹配確切的表名,弄清楚它是否已經存在?
無需查詢。 只是運行這個
$this->db->table_exists('customer');
例
$query = $this->db->table_exists('customer');
$count = count($query);
if (empty($count)) {
echo "No Table Found";
}
elseif ($count == 1) {
echo "Oopzz! There is table";
}
elseif ($count >1) {
echo "Ohh !! There are many tables";
}
您應該只從查詢中刪除通配符。 即
$query = "SHOW TABLES LIKE '$name'";
當然,這不是必須的。
沒有LIKE
:
如果您不想使用LIKE子句,這很公平,這是沒有它的查詢。 根據表是否存在,它返回1
或0
。
SELECT count((1)) as `ct` FROM INFORMATION_SCHEMA.TABLES where table_schema ='database' and table_name='table';
而且還有許多其他方法已經得到解決。 在此處檢出它們: 如何檢查MySQL表是否與PHP一起存在?
$check_exists = mysql_query("SHOW TABLES LIKE '$name'");
$table_exists = mysql_num_rows($check_exists) > 0;
if ($table_exists) {
echo 'table exists';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.