PHP PDO'de mysql_list_tables Eşdeğer?

4 Cevap php

Veritabanına erişmek için PHP PDO kullanırken, bir veritabanındaki tüm tabloları listelemek için bir yol var?

Ne gerekli mysql_list_tables gibi bir şey () 'dir.

4 Cevap

Ne böyle bir şey yapar, bir SQL sorgusu kullanma hakkında:

show tables

Ya da, gerekirse, veritabanı belirterek:

show tables from crawler

Ve, sadece bazı tabloları almak istiyorsanız:

show tables from crawler like 'site%'


Actually, even if the mysql_list_tables() function exists, its manual page states :

This function is deprecated. It is preferable to use mysql_query() to issue a SQL SHOW TABLES [FROM db_name] [LIKE 'pattern'] statement instead.

Yani, bu PDO ile oldukça Tamam olmalı, ben tahmin ediyorum.


And, testing with PDO :

$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]);
}

Ben çıktı bu tür alıyorum:

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)

Ben aslında bu veritabanında var tablolar ile uyuyor.

Eğer bir çapraz platform şekilde bu yapmak istiyorsanız, Zend Framework 's Zend_Db , which provides the listTables() yöntemi bakmak

Eğer şema için sorgulamak için taşınabilir bir yol istiyorsanız, ansi standart INFORMATION_SCHEMA kullanabilirsiniz

$alltables=$db->query("SHOW TABLES",PDO::FETCH_NUM);

while($result=$alltables->fetch()){

echo $result[0].'<br/>';
}

Bu istediğiniz tam kodu, sanırım.