Gibt es bei Verwendung von PHP PDO für den Zugriff auf die Datenbank eine Möglichkeit, alle Tabellen in einer Datenbank aufzulisten?Äquivalent von mysql_list_tables in PHP PDO?
Etwas wie mysql_list_tables() ist was benötigt wird.
Gibt es bei Verwendung von PHP PDO für den Zugriff auf die Datenbank eine Möglichkeit, alle Tabellen in einer Datenbank aufzulisten?Äquivalent von mysql_list_tables in PHP PDO?
Etwas wie mysql_list_tables() ist was benötigt wird.
Was ist eine SQL-Abfrage verwenden, die so etwas wie dies funktioniert:
show tables
Oder, falls erforderlich, unter Angabe der Datenbank:
show tables from crawler
Und, wenn Sie nur ein paar Tische zu bekommen:
show tables from crawler like 'site%'
Eigentlich, auch wenn die 0.123.function exists, es gibt die Seite manual page:
Diese Funktion ist veraltet. Es ist vorzuziehen zu verwenden
mysql_query()
zu geben Sie eineSQL SHOW TABLES [FROM db_name] [LIKE 'pattern']
Anweisung statt.
Also, das sollte ziemlich gut mit PDO sein, schätze ich.
Und mit PDO Prüfung:
$db = new PDO('mysql:dbname=crawler;host=127.0.0.1', 'crawler', 'crawler');
$result = $db->query("show tables");
while ($row = $result->fetch(PDO::FETCH_NUM)) {
var_dump($row[0]);
}
ich diese Art der Ausgabe bekommen: Ich habe tatsächlich in dieser Datenbank
string 'headers' (length=7)
string 'headers_sites' (length=13)
string 'headers_sites_0' (length=15)
...
string 'headers_sites_7' (length=15)
string 'reporting_sites_servers_software' (length=32)
string 'servers' (length=7)
string 'sites' (length=5)
string 'sites_0' (length=7)
...
string 'sites_servers' (length=13)
string 'sites_software' (length=14)
string 'software' (length=8)
, die mit den Tabellen passen.
Wenn Sie wollen, dass diese in einer plattformübergreifende Art und Weise zu tun, schauen Sie in Zend Framework ‚s Zend_Db
, die die listTables()
Methode liefert
Wenn Sie einen tragbaren Weg wollen für das Schema abzufragen, können Sie die ansi verwenden Standard INFORMATION_SCHEMA
$alltables=$db->query("SHOW TABLES",PDO::FETCH_NUM);
while($result=$alltables->fetch()){
echo $result[0].'<br/>';
}
Das ist der genaue Code, den Sie wollen, denke ich.
Ja. Dies funktioniert, solange die Abfragesyntax "Tabellen anzeigen" für alle von PDO unterstützten Datenbanktreiber gültig ist. Ist das der Fall? – saintsjd
Zum Beispiel verwendet Postgres "\ dt" zum Auflisten von Tabellen und nicht "Show Tables". Wenn unser Ziel die datenbankübergreifende Kompatibilität ist (mit PDO), dann wird dieser Weg nicht funktionieren. – saintsjd
@saintsjd: wahrscheinlich nicht, leider :-(;; durch die Quellen des Doctrine ORM-Frameworks, die Abfrage zum Auflisten der Tabellen einer DB ist etwas komplizierter für MsSQL, komplizierter für SQLite und noch mehr Kompliziert für PgSQL :-( –