我试图列出我的所有数据库,所以我使用了这个:
$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)
我是对的吗?这是这种语法背后的理论吗?或者是什么?
答案 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)
我不知道您使用的语言。但是数据库查询通常会返回一个结果集,允许您通过列的索引或其名称来访问不同列中的值。后者就是你在这里做的。