Проверить, если таблица существует в базе данных


Как проверить, если определяется, что таблица существует в базе данных, прежде чем пытаться использовать?

<?php
// define a tabela
$table = 'banana';

// verificar se tabela "banana" existe aqui
// $tableExists = ??

// executa consulta se existir
if ($tableExists) {
  $query = 'SELECT * FROM '.$table.' WHERE 1';
  // executa a consulta, etc...
} else {
  die ('A tabela '.$table.' não foi encontrada na base de dados!');
}
?>
Author: Zuul, 2014-01-16

3 answers

, Основанной в этом ответе SO, самый простой:

$table = 'banana';
$tableExists = $db->query("SHOW TABLES LIKE '$table'")->rowCount() > 0;

В качестве Альтернативы, если кто-то не хочет использовать PDO:

$table = 'banana';
$result = mysqli_query("SHOW TABLES LIKE '$table'");
$tableExists = $result && $result->num_rows > 0;
 21
Author: utluiz, 2017-07-31 19:54:16

По information_schema mysql-это возможность получить все таблицы из базы данных:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'data_base'
AND table_name = 'nome_da_tabela'

После запроса, используйте функцию/метод драйвера базы, что retona количество записей в базе:

Count() (условно)

RowCount()(PDO)

Mysqli_num_rows()(mysqli)

$db = new PDO('mysql:host=localhost dbname=test','usuario', 'senha');
$sql = 'SELECT table_name FROM information_schema.tables WHERE table_schema = :database
AND table_name = :tabela';

$stmt = $db->prepare($sql);
$stmt->bindValue(':database', 'test';
$stmt->bindValue(':tabele', 'bananas';
$stmt->execute();
$tabelas = $stmt->rowCount();

if($tabelas >= 1 ){
  echo 'tabela valida';
  //efetuar select
}else{
  echo 'tabela invalida';
  //efetuar um create table?
}

О information_schema

 8
Author: rray, 2014-01-16 13:41:37

Создайте функцию, чтобы вы могли сделать поиск динамически -

public function verificaTabela($tabela)
{
    $tabelas_consulta = mysql_query('SHOW TABLES');

    while ($tabelas_linha = mysql_fetch_row($tabelas_consulta))
    {
        $tabelas[] = $tabelas_linha[0];
    }

    if (!in_array($tabela, $tabelas)) 
    {
        return false;
    }
    else
    {
        return true;
    }
}

$tabela_existe = verificaTabela('minha_tabela');
 7
Author: Haone Nakano, 2014-01-17 14:45:03