Проверить, если таблица существует в базе данных
Как проверить, если определяется, что таблица существует в базе данных, прежде чем пытаться использовать?
<?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!');
}
?>
22
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() (условно)
$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?
}
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