¿Cuál es la mejor manera de verificar si existe una tabla en MySQL (preferiblemente a través de PDO en PHP) sin lanzar una excepción? No tengo ganas de analizar los resultados de "SHOW TABLES LIKE", etc. Debe haber algún tipo de consulta booleana?
123
mysql_*
funciones, están oficialmente en desuso , ya no se mantienen y se eliminarán en el futuro. Debe actualizar su código con PDO o MySQLi para garantizar la funcionalidad de su proyecto en el futuro.Si está utilizando MySQL 5.0 y versiones posteriores, puede intentar:
Cualquier resultado indica que la tabla existe.
De: http://www.electrictoolbox.com/check-if-mysql-table-exists/
fuente
Usando mysqli he creado la siguiente función. Asumiendo que tiene una instancia de mysqli llamada $ con.
Espero eso ayude.
Advertencia: como lo sugiere @jcaron, esta función podría ser vulnerable a los ataques de sqlinjection, así que asegúrese de que su
$table
var esté limpia o incluso mejor use consultas parametrizadas.fuente
Esto se publica simplemente si alguien viene a buscar esta pregunta. A pesar de que ha sido respondido un poco. Algunas de las respuestas lo hacen más complejo de lo necesario.
Para mysql * utilicé:
En PDO utilicé:
Con esto solo empujo la condición else a o. Y para mis necesidades solo necesito morir. Aunque puede configurar o para otras cosas. Algunos pueden preferir el if / else if / else. Cuál es entonces eliminar o y luego suministrar if / else if / else.
fuente
Aquí está la solución que prefiero cuando uso procedimientos almacenados. La función mysql personalizada para verificar la tabla existe en la base de datos actual.
fuente
Como "Mostrar tablas" puede ser lento en bases de datos más grandes, le recomiendo usar "DESCRIBIR" y verificar si obtiene verdadero / falso como resultado
fuente
fuente
Marco Zend
fuente
Si la razón para querer hacer esto es la creación de una tabla condicional, entonces 'CREAR TABLA SI NO EXISTE' parece ideal para el trabajo. Hasta que descubrí esto, utilicé el método 'DESCRIBIR' anterior. Más información aquí: MySQL "CREAR TABLA SI NO EXISTE" -> Error 1050
fuente
¿Por qué lo haces tan difícil de entender?
fuente