Qual é a melhor maneira de verificar se existe uma tabela no MySQL (de preferência via DOP no PHP) sem gerar uma exceção. Não sinto vontade de analisar os resultados de "MOSTRAR TABELAS COMO" et cetera. Deve haver algum tipo de consulta booleana?
123
mysql_*
funções, elas são oficialmente descontinuadas , não são mais mantidas e serão removidas no futuro. Você deve atualizar seu código com o PDO ou MySQLi para garantir a funcionalidade do seu projeto no futuro.Se você estiver usando o MySQL 5.0 e posterior, você pode tentar:
Qualquer resultado indica que a tabela existe.
De: http://www.electrictoolbox.com/check-if-mysql-table-exists/
fonte
Usando o mysqli eu criei a seguinte função. Supondo que você tenha uma instância do mysqli chamada $ con.
Espero que ajude.
Atenção: como sugerido por @jcaron, esta função pode ser vulnerável a attets de sqlinjection, portanto, verifique se o seu
$table
var está limpo ou ainda melhor use consultas parametrizadas.fonte
Isto é publicado simplesmente se alguém vier à procura desta pergunta. Mesmo que tenha sido respondido um pouco. Algumas das respostas a tornam mais complexa do que precisava.
Para o mysql * eu usei:
Na DOP eu usei:
Com isso, apenas empurro a condição else para ou. E para as minhas necessidades, só preciso morrer. Embora você possa definir ou para outras coisas. Alguns podem preferir o if / else if / else. Que é então remover ou fornecer e então se / else if / else.
fonte
Aqui está a minha solução que eu prefiro ao usar procedimentos armazenados. Função personalizada do mysql para verificar se a tabela existe no banco de dados atual.
fonte
Como um "Mostrar tabelas" pode ser lento em bancos de dados maiores, recomendo usar "DESCRIBE" e verifique se você é verdadeiro / falso como resultado
fonte
fonte
Estrutura Zend
fonte
Se o motivo para querer fazer isso é a criação de tabela condicional, 'CREATE TABLE IF NOT EXISTS' parece ideal para o trabalho. Até descobrir isso, usei o método 'DESCRIBE' acima. Mais informações aqui: MySQL "CRIAR TABELA SE NÃO EXISTIR" -> Erro 1050
fonte
Por que você torna tão difícil de entender?
fonte