繁体   English   中英

MySQL检查表是否已经存在

[英]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子句,这很公平,这是没有它的查询。 根据表是否存在,它返回10

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM