Was ist der beste Weg, um zu überprüfen, ob eine Tabelle in MySQL vorhanden ist (vorzugsweise über PDO in PHP), ohne eine Ausnahme auszulösen. Ich habe keine Lust, die Ergebnisse von "SHOW TABLES LIKE" usw. zu analysieren. Es muss eine Art boolesche Abfrage geben?
123
mysql_*
Funktionen, werden sie offiziell als veraltet , nicht mehr aufrecht erhalten und werden entfernt in der Zukunft. Sie sollten Ihren Code mit PDO oder MySQLi aktualisieren , um die Funktionalität Ihres Projekts in Zukunft sicherzustellen.Wenn Sie MySQL 5.0 und höher verwenden, können Sie Folgendes versuchen:
Alle Ergebnisse zeigen an, dass die Tabelle vorhanden ist.
Von: http://www.electrictoolbox.com/check-if-mysql-table-exists/
quelle
Mit mysqli habe ich folgende Funktion erstellt. Angenommen, Sie haben eine mysqli-Instanz namens $ con.
Ich hoffe es hilft.
Warnung: Wie von @jcaron vorgeschlagen, ist diese Funktion möglicherweise anfällig für sqlinjection-Attacs. Stellen Sie daher sicher, dass Ihre Variable sauber
$table
ist, oder verwenden Sie besser parametrisierte Abfragen.quelle
Dies wird einfach gepostet, wenn jemand nach dieser Frage sucht. Obwohl es ein bisschen beantwortet wurde. Einige der Antworten machen es komplexer als nötig.
Für MySQL * habe ich verwendet:
In PDO habe ich verwendet:
Damit schiebe ich einfach die else-Bedingung in oder. Und für meine Bedürfnisse brauche ich nur einfach zu sterben. Obwohl Sie oder zu anderen Dingen setzen können. Einige bevorzugen vielleicht das if / else if / else. Welches ist dann zu entfernen oder und dann zu liefern, wenn / sonst wenn / sonst.
quelle
Hier ist meine Lösung, die ich bei der Verwendung gespeicherter Prozeduren bevorzuge. Benutzerdefinierte MySQL-Funktion zum Überprüfen, ob die Tabelle in der aktuellen Datenbank vorhanden ist.
quelle
Da "Tabellen anzeigen" in größeren Datenbanken möglicherweise langsam ist, empfehle ich die Verwendung von "DESCRIBE" und überprüfe, ob Sie als Ergebnis true / false erhalten
quelle
quelle
Zend Framework
quelle
Wenn der Grund dafür die bedingte Tabellenerstellung ist, ist "TABELLE ERSTELLEN, WENN NICHT EXISTIERT" für den Job ideal. Bis ich dies entdeckte, habe ich die oben beschriebene Methode 'DESCRIBE' verwendet. Weitere Infos hier: MySQL "TABELLE ERSTELLEN, WENN NICHT EXISTIERT" -> Fehler 1050
quelle
Warum machst du es so schwer zu verstehen?
quelle