简体   繁体   中英

MySQL check if table already exists

I have couple of tables in my MySQL database. They have a certain naming convention such as.

tbl_1_alpha
tbl_1_beta
tbl_1_alpha2
tbl_2_beta
tbl_3_alpha2

Now I want to check wether a given table is already exists in the database.

eg.

  • $name = 'tbl_1_alpha' -> exists
  • $name = 'tbl_1_alpha2' -> exists
  • $name = 'tbl_1_alpha3' -> does not exists

To get the result I used the following functions

 public function exists($name)
    {

        $query = "SHOW TABLES LIKE '$name%'";

        $result = $this->db->query($query);

        if ($result->num_rows() > 0) {
            return true;
        }
        return false;

    }

for a given $name = tbl_1_alpha it return true . But When I delete the table tbl_1_alpha it still returns true because it matches the name to tbl_1_alpha2 . How can I avoid that?

Can anyone help me to match the exact table name and figure out wether it is already exist or not?

No need of query. just run this

$this->db->table_exists('customer');

Table Data


Example

$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";
}

You should just remove the wild card from the query. ie

$query = "SHOW TABLES LIKE '$name'";

Given, of course, that it's not a requirement.

Without LIKE :

Fair enough if you don't want to use the LIKE clause, here's the query without it. It either returns 1 or 0 depending on whether the table exists or not.

SELECT count((1)) as `ct`  FROM INFORMATION_SCHEMA.TABLES where table_schema ='database' and table_name='table';

And there are many other ways too which are already answered. Checkout them here : How can I check if a MySQL table exists with PHP?

$check_exists = mysql_query("SHOW TABLES LIKE '$name'");
$table_exists = mysql_num_rows($check_exists) > 0;
if ($table_exists) {
    echo 'table exists';
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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