簡體   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