为什么这种语法有效?

时间:2014-09-11 06:51:01

标签: php database syntax

我试图列出我的所有数据库,所以我使用了这个:

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

然后我将db读取到一个数组中,我还列出了这个数组中每个数据库的表:

 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)

我是对的吗?这是这种语法背后的理论吗?或者是什么?

2 个答案:

答案 0 :(得分:3)

您正在通过索引名称访问数组结果,如果您创建变量$ row的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代替,使用position:

进行访问
while ($row2 = mysql_fetch_row($query3)){
    echo $row2[0];
}

重要:

我忘了提及,但 mysql _ 扩展程序已弃用,因此您应该使用PDO或 mysqli _ 函数

答案 1 :(得分:0)

我不知道您使用的语言。但是数据库查询通常会返回一个结果集,允许您通过列的索引或其名称来访问不同列中的值。后者就是你在这里做的。