2009-09-20 15 views

उत्तर

19

क्या एक 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]); 
} 

मैं उत्पादन के इस प्रकार हो रही है।

+0

हां। यह तब तक काम करेगा जब तक "शो टेबल" क्वेरी सिंटैक्स सभी पीडीओ समर्थित डेटाबेस ड्राइवरों के लिए मान्य नहीं है। क्या यह मामला है? – saintsjd

+0

उदाहरण के लिए, पोस्टग्रेज़ टेबल सूची में "\ dt" का उपयोग करता है और "तालिकाएं दिखाएं" नहीं। तो यदि हमारा लक्ष्य क्रॉस-डेटाबेस संगतता (पीडीओ का उपयोग करके) है, तो इस तरह से काम नहीं करेगा। – saintsjd

+0

@ संतोंज: शायद नहीं, दुर्भाग्य से :-(; सिद्धांत ओआरएम ढांचे के स्रोतों के माध्यम से जा रहा है, डीबी की सारणी सूचीबद्ध करने के लिए उपयोग की जाने वाली क्वेरी एमएसएसक्यूएल के लिए थोड़ा अधिक जटिल है, SQLite के लिए फिर से जटिल है, और इससे भी अधिक पीजीएसक्यूएल के लिए जटिल :-( –

1

आप एक पार मंच तरह से यह करने के लिए, इस पर गौर चाहते हैं Zend Framework के Zend_Db, प्रदान करता है जो listTables() विधि

2

आप स्कीमा के लिए क्वेरी करने के लिए एक पोर्टेबल तरीका चाहते हैं, आप उपयोग कर सकते हैं एएनएसआई मानक INFORMATION_SCHEMA

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

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

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

यह सटीक कोड है जो आप चाहते हैं, मुझे लगता है।

संबंधित मुद्दे