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');
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.