डेटाबेस तक पहुंचने के लिए PHP पीडीओ का उपयोग करते समय, डेटाबेस में सभी तालिकाओं को सूचीबद्ध करने का कोई तरीका है?PHP पीडीओ में mysql_list_tables के समतुल्य?
mysql_list_tables() की तरह कुछ आवश्यक है।
डेटाबेस तक पहुंचने के लिए PHP पीडीओ का उपयोग करते समय, डेटाबेस में सभी तालिकाओं को सूचीबद्ध करने का कोई तरीका है?PHP पीडीओ में mysql_list_tables के समतुल्य?
mysql_list_tables() की तरह कुछ आवश्यक है।
क्या एक SQL क्वेरी जो कुछ इस तरह करता है का उपयोग कर के बारे में:
show tables
या, यदि आवश्यक हो तो, डेटाबेस को निर्दिष्ट:
show tables from crawler
और, यदि आप केवल कुछ टेबल प्राप्त करना चाहते हैं:
show tables from crawler like 'site%'
असल , भले ही 0,123,फ़ंक्शन मौजूद है, इसका मैनुअल पेज कहता है:
यह फ़ंक्शन बहिष्कृत किया गया है। यह
mysql_query()
से का उपयोग करने के लिएSQL SHOW TABLES [FROM db_name] [LIKE 'pattern']
कथन का उपयोग करने के लिए बेहतर है।
तो, यह पीडीओ के साथ काफी ठीक होना चाहिए, मैं अनुमान लगा रहा हूं।
और, पीडीओ के साथ परीक्षण:
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)
कौन सा टेबल मैं वास्तव में इस डेटाबेस में है के साथ फिट बैठता है:
$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]);
}
मैं उत्पादन के इस प्रकार हो रही है।
आप एक पार मंच तरह से यह करने के लिए, इस पर गौर चाहते हैं Zend Framework के Zend_Db
, प्रदान करता है जो listTables()
विधि
आप स्कीमा के लिए क्वेरी करने के लिए एक पोर्टेबल तरीका चाहते हैं, आप उपयोग कर सकते हैं एएनएसआई मानक INFORMATION_SCHEMA
$alltables=$db->query("SHOW TABLES",PDO::FETCH_NUM);
while($result=$alltables->fetch()){
echo $result[0].'<br/>';
}
यह सटीक कोड है जो आप चाहते हैं, मुझे लगता है।
हां। यह तब तक काम करेगा जब तक "शो टेबल" क्वेरी सिंटैक्स सभी पीडीओ समर्थित डेटाबेस ड्राइवरों के लिए मान्य नहीं है। क्या यह मामला है? – saintsjd
उदाहरण के लिए, पोस्टग्रेज़ टेबल सूची में "\ dt" का उपयोग करता है और "तालिकाएं दिखाएं" नहीं। तो यदि हमारा लक्ष्य क्रॉस-डेटाबेस संगतता (पीडीओ का उपयोग करके) है, तो इस तरह से काम नहीं करेगा। – saintsjd
@ संतोंज: शायद नहीं, दुर्भाग्य से :-(; सिद्धांत ओआरएम ढांचे के स्रोतों के माध्यम से जा रहा है, डीबी की सारणी सूचीबद्ध करने के लिए उपयोग की जाने वाली क्वेरी एमएसएसक्यूएल के लिए थोड़ा अधिक जटिल है, SQLite के लिए फिर से जटिल है, और इससे भी अधिक पीजीएसक्यूएल के लिए जटिल :-( –