我的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
的名称相匹配。我怎么能避免这种情况?
任何人都可以帮我匹配确切的表名并弄清楚它是否已经存在?
答案 0 :(得分:4)
无需查询。只需运行此
$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";
}
答案 1 :(得分:0)
您应该从查询中删除通配符。 即。
$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';
还有许多其他方法已经得到解答。在这里查看它们:How can I check if a MySQL table exists with PHP?
答案 2 :(得分:0)
$check_exists = mysql_query("SHOW TABLES LIKE '$name'");
$table_exists = mysql_num_rows($check_exists) > 0;
if ($table_exists) {
echo 'table exists';
}