[英]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.