2014-09-11 150 views
1

我試圖列出所有我的數據庫,所以我用這個:爲什麼這個語法有效?

$sql="SHOW DATABASES"; 
    $query=mysql_query($sql,$connect); 

然後我取分貝到一個數組,我也列出的每個數據庫的表此數組:

while ($row = mysql_fetch_assoc($query)){ 
$sql3="SHOW TABLES FROM `".$row['Database']."`"; //**i dont understand why $row['Database'] works?** 
$query3=mysql_query($sql3, $connect); 
} 

我們給出一個示例數組(db1,db2,db3)。當我使用:

SHOW TABLES FROM `".$row['Database']. 

它會顯示每個表來自:

$row[0](db1) , $row[1](db2) , $row[2](db3) 

我說得對不對?這是這個語法背後的理論嗎?或者是什麼?

回答

3

你被索引名訪問數組的結果,如果你把變量$行的print_r你會得到這樣的事情:

Array 
(
    [Database] => information_schema 
) 
Array 
(
    [Database] => mysql 
) 

所以,你可以通過使用Database指數

訪問值

編輯:

在表格中的情況下,你會得到這樣的事情:

Array 
(
    [Tables_in_information_schema] => CHARACTER_SETS 
) 
... 
Array 
(
    [Tables_in_mysql] => columns_priv 
) 
使用位置

while ($row2 = mysql_fetch_assoc($query3)){ 
    echo $row2["Tables_in_{$row['Database']}"]; 
} 

OR

您可以使用mysql_fetch_row而是一個訪問它:

因此,該指數將與每個表的變化,你可以用這樣的訪問

重要:

我忘了提,但mysql_擴展名已棄用,因此您應該使用PDO或mysqli_函數代替

+0

so數據庫是一個索引?像一個保留字?如果我想爲表做同樣的事情,可以說如果我提取表並將它們分配給$ row1,我可以使用類似$ row ['tables']的東西嗎? – Memphistoles 2014-09-11 07:08:59

+0

對於表我做了一個不同的事情,我獲取數組中的每一個表,然後我用foreach去通過數組 – Memphistoles 2014-09-11 07:11:58

+0

我會更新我的答案 – Sal00m 2014-09-11 07:15:50

0

我不知道您使用的語言。但數據庫查詢通常會返回一個結果集,這使您可以通過列的索引或名稱訪問不同列中的值。後者就是你在這裏做的。