检查MySQL表是否存在

时间:2012-01-25 18:39:38

标签: php mysql exists

  

可能重复:
  MySQL check if a table exists without throwing an exception

我的项目中有一个动态的mysql查询构建器,它可以从不同的表创建选择查询 我需要检查当前的处理表是否存在 想象一下,我的表是table1,table2和table3。我的代码是这样的:

<?php
for($i = 1 ; $i <= 3 ; $i++) {
   $this_table = 'table'.$i;
   $query = mysql_query("SELECT * FROM $this_table");
   // ...
}
?>

我该如何检查(请告诉我最简单的方法)。

7 个答案:

答案 0 :(得分:89)

更新了mysqli版本:

if ($result = $mysqli->query("SHOW TABLES LIKE '".$table."'")) {
    if($result->num_rows == 1) {
        echo "Table exists";
    }
}
else {
    echo "Table does not exist";
}

原始mysql版本:

if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$table."'"))==1) 
    echo "Table exists";
else echo "Table does not exist";

引自PHP docs

答案 1 :(得分:12)

取自another post

$checktable = mysql_query("SHOW TABLES LIKE '$this_table'");
$table_exists = mysql_num_rows($checktable) > 0;

答案 2 :(得分:9)

$query = mysqli_query('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME IN ("table1","table2","table3") AND TABLE_SCHEMA="yourschema"');
$tablesExists = array();
while( null!==($row=mysqli_fetch_row($query)) ){
    $tablesExists[] = $row[0];
}

答案 3 :(得分:3)

$result = mysql_query("SHOW TABLES FROM $dbname");

while($row = mysql_fetch_row($result)) 
{
    $arr[] = $row[0];
}

if(in_array($table,$arr))
{
  echo 'Table exists';
}

答案 4 :(得分:2)

你可以试试这个

$query = mysql_query("SELECT * FROM $this_table") or die (mysql_error());

或者

$query = mysql_query("SELECT * FROM $this_table") or die ("Table does not exists!");

或者

$query = mysql_query("SELECT * FROM $this_table");

if(!$query)
   echo "The ".$this_table." does not exists";

希望它有所帮助!

答案 5 :(得分:1)

使用此查询,然后检查结果。

$query = 'show tables like "test1"';

答案 6 :(得分:0)

MySQL方式:

SHOW TABLES LIKE 'pattern';

还有一个不推荐使用的PHP函数用于列出所有数据库表,请看一下 http://php.net/manual/en/function.mysql-list-tables.php

查看该链接,对那里的评论有很多有用的见解。