2012-03-27 14 views
8

से php में सभी तालिका नाम प्रदर्शित करना ठीक है, इसलिए मैं PHP और SQL/MySQL के लिए बिल्कुल नया हूं इसलिए किसी भी मदद की सराहना की जाती है।MySQL डेटाबेस

मुझे लगता है कि मैंने सही दृष्टिकोण लिया है। मैंने "MySQL सभी टेबल नामों को दिखाने के लिए php.net की खोज की", यह एक बहिष्कृत विधि लौटा दी और SHOW TABLES [FROM db_name] [LIKE 'pattern'] पर एक MySQL क्वेरी का उपयोग करने का सुझाव दिया। मुझे यकीन नहीं है कि "पैटर्न" का अर्थ क्या है, लेकिन मैंने "एसक्यूएल वाइल्डकार्ड" की खोज की और " %" प्रतीक। मुझे जो कुछ भी मिला, उसके अनुसार, यह अंत में टेबल नामों को काम और आउटपुट करना चाहिए, लेकिन ऐसा नहीं है। कोई सुझाव? अग्रिम में धन्यवाद।

<?php 
if ($_REQUEST["username"]=="coke"&&$_REQUEST["password"]=="pepsi"){ 
echo 'You have successfully logged in.'; 
echo '<br />'; 
echo 'These are your tables:'; 
echo '<br />'; 

    $link = mysql_connect("sql2.njit.edu", "username", "password"); 

    mysql_select_db("db_name") or die(mysql_error()); 

    $result = mysql_query('SHOW TABLES [FROM db_name] [LIKE '%']'); 
    echo $result; 
} 
else 
echo 'You did not provide the proper authentication'; 
?> 

मुझे कोई त्रुटि नहीं है। आउटपुट बिल्कुल इको किया गया है, लेकिन कोई टेबल नाम नहीं है।

उत्तर

38

वैकल्पिक पैरामीटर के समूहों को इंगित करने के लिए आपके कोड में स्क्वायर ब्रैकेट्स का उपयोग mysql दस्तावेज़ में किया जाता है। वे वास्तविक प्रश्न में नहीं होना चाहिए।

केवल आदेश आप वास्तव में जरूरत है:

show tables; 

आप एक विशिष्ट डेटाबेस से तालिकाओं चाहते हैं, मान लीजिए कि डेटाबेस "किताबें", तो यह होगा

show tables from books; 

आप केवल आवश्यकता है यदि आप टेबल ढूंढना चाहते हैं तो जिनके नाम एक निश्चित पैटर्न से मेल खाते हैं। उदाहरण के लिए,

show tables from books like '%book%'; 

आपको उन नामों के नाम दिखाएगा जिनके नाम पर कहीं "पुस्तक" है।

इसके अलावा, बस "शो टेबल" क्वेरी चलाने से आप जो भी आउटपुट देख सकते हैं उसका उत्पादन नहीं करेंगे। एसक्यूएल क्वेरी का जवाब देता है और फिर इसे PHP पर भेजता है, लेकिन आपको पृष्ठ पर इसे गूंजने के लिए PHP को बताना होगा।

चूंकि ऐसा लगता है कि आप SQL के लिए बहुत नए हैं, तो मैं कमांड लाइन से mysql क्लाइंट को चलाने की सलाह दूंगा (या phpmyadmin का उपयोग करके, अगर यह आपके सिस्टम पर स्थापित है)। इस तरह आप प्रश्न भेजने और परिणाम प्राप्त करने के लिए PHP के कार्यों के बिना विभिन्न प्रश्नों के परिणाम देख सकते हैं।

यदि आपको PHP का उपयोग करना है, तो यहां एक बहुत ही सरल प्रदर्शन है। अपने डेटाबेस से कनेक्ट करने के बाद इस कोड का प्रयास करें:

$result = mysql_query("show tables"); // run the query and assign the result to $result 
while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result 
    echo($table[0] . "<BR>"); // print the table that was returned on that row. 
} 
0

आपको mysql_query को एक चर (जैसे $ परिणाम) में असाइन करने की आवश्यकता है, फिर इस चर को प्रदर्शित करें क्योंकि आप डेटाबेस से सामान्य परिणाम प्राप्त करेंगे। वर्ग कोष्ठक में MySQL प्रलेखन से

SHOW TABLES 

SHOW TABLES FROM mydatabase 

SHOW TABLES FROM mydatabase LIKE "tab%" 

बातें [] वैकल्पिक हैं:

+0

यह काम नहीं किया। कोई अन्य सुझाव? आपके द्वारा सुझाए गए परिवर्तनों को दिखाने के लिए मेरे प्रश्न को अपडेट किया गया। – EGHDK

+0

आपको एक सामान्य परिणाम सेट के रूप में $ परिणाम लूप करने की आवश्यकता है: 'जबकि ($ row = mysql_fetch_array ($ परिणाम, MYSQL_NUM)) { $ पंक्ति गूंज [0]; } ' –

+0

मुझे भी लगता है कि एसक्यूएल सिंटैक्स कहीं और बताए गए बिट ऑफ हो सकता है - स्क्वायर ब्रैकेट्स –

1

प्रश्नों की तरह दिखना चाहिए।

1
SHOW TABLES 

अपने DB में सभी तालिकाओं में दिखाई देंगे।आप नाम आप LIKE का उपयोग करें और वाइल्डकार्ड %

SHOW TABLES FROM my_database LIKE '%user%' 

आप सभी तालिकाओं है कि नाम 'उपयोगकर्ता' शामिल दे देंगे फिल्टर करने के लिए, उदाहरण के

users 
user_pictures 
mac_users 

आदि

1

कोष्ठक के लिए चाहते हैं कि आमतौर पर msql प्रलेखन में प्रयोग किया जाता है उदाहरण के लिए 'असली' क्वेरी में छोड़ा जाना चाहिए।

यह भी प्रकट नहीं होता है कि आप कहीं भी mysql क्वेरी के परिणाम को प्रतिबिंबित कर रहे हैं। mysql_query सफलता पर एक mysql संसाधन देता है। PHP मैनुअल पेज में echoing और अन्य हेरफेर के लिए एक सरणी में mysql परिणाम संसाधन को लोड करने के निर्देशों में भी निर्देश शामिल हैं।

6

लोगों के लिए है कि PDO statements

$query = $db->prepare('show tables'); 
$query->execute(); 

while($rows = $query->fetch(PDO::FETCH_ASSOC)){ 
    var_dump($rows); 
} 
0

सुनिश्चित करें कि आप सभी रिकॉर्ड के माध्यम से SHOW TABLES और फिर पाश के साथ अपने डेटाबेस क्वेरी कर सकते हैं लेकिन यह है कि अतिरिक्त कोड लाइनों और काम है का उपयोग कर रहे हैं।

पीएचपी एक आप के लिए एक सरणी में सभी तालिकाओं सूची समारोह में बनाया गया है:

mysql_list_tables - आप The PHP API page

+0

में सबकुछ से छुटकारा पाएं यह फ़ंक्शन अब पूरी तरह से हटा दिया गया है। – NaveenDA

1

// list_tables पर इसके बारे में अधिक जानकारी पा सकते हैं सभी तालिका डेटाबेस का मतलब

$tables = $this->db->list_tables(); 
foreach ($tables as $table) 
{ 
    echo $table; 
} 
+5

यदि आप एक ऐसे प्रश्न का उत्तर देने जा रहे हैं जो साल पुराना है, तो कृपया बताएं कि आपका उत्तर पहले से सूचीबद्ध उत्तरों के मुकाबले बेहतर है या आपके उत्तर को अनुमति देने के लिए भाषा कैसे बदल गई है। –

+0

list_tables का मतलब डेटाबेस सभी तालिका है –

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