web-dev-qa-db-ja.com

MySQLテーブルが存在するかどうかを確認します

可能性のある複製:
例外をスローせずにテーブルが存在するかどうかのMySQLチェック

私のプロジェクトには、異なるテーブルから選択クエリを作成する動的なmysqlクエリビルダーがあります。
現在の処理テーブルが存在するかどうかを確認する必要があります。
私のテーブルがtable1、table2、table3であるとします。私のコードは次のようなものです:

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

このチェックを行うにはどうすればよいですか(最も簡単な方法を教えてください)。

40
Mohammad Saberi

更新された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ドキュメント から参照。

89
afuzzyllama

別の投稿 から取得

$checktable = mysql_query("SHOW TABLES LIKE '$this_table'");
$table_exists = mysql_num_rows($checktable) > 0;
12
bowlerae
$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];
}
9
Timur
$result = mysql_query("SHOW TABLES FROM $dbname");

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

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

これを試すことができます

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

それが役に立てば幸い!

2
boyd

このクエリを使用して、結果を確認します。

$query = 'show tables like "test1"';
1
Michael Dillon

MySQLの方法:

SHOW TABLES LIKE 'pattern';

非推奨のPHPすべてのdbテーブルを一覧表示する関数もあります。 http://php.net/manual/en/function.mysql-list-tables.phpをご覧ください。

そのリンクをチェックしてください。そこのコメントに関する多くの有用な洞察があります。

0
Castilho