web-dev-qa-db-fra.com

Vérifier si la table MySQL existe ou non

Dupliquer possible:
MySQL vérifie si une table existe sans lever d'exception

J'ai un constructeur de requête mysql dynamique dans mon projet qui crée des requêtes de sélection à partir de différentes tables.
Je dois vérifier si la table de traitement actuelle existe ou non.
Imaginez que mes tables soient table1, table2 et table3. Mon code est quelque chose comme ceci: 

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

Comment puis-je faire cette vérification (S'il vous plaît dites-moi le moyen le plus simple).

39
Mohammad Saberi

Mise à jour de la version de mysqli:

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

Version originale de MySQL:

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

Référencé à partir de PHP docs .

87
afuzzyllama

Tiré de un autre post

$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
Zulkhaery Basrul

Tu peux essayer ça

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

ou ca

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

ou ca

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

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

J'espère que ça aide!

2
boyd

Utilisez cette requête, puis vérifiez les résultats.

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

Façon MySQL:

SHOW TABLES LIKE 'pattern';

Il existe également une fonction obsolète PHP pour répertorier toutes les tables de base de données. Consultez http://php.net/manual/en/function.mysql-list-tables.php

Allez voir ce lien, vous y trouverez de nombreuses informations utiles sur les commentaires.

0
Castilho