$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);
/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);
从PHP手册我有上面的代码,我想知道是否有人可以帮助我更好地理解它。这已经是多方面的吗?我可以通过以下方式访问(例如)第5行的Name和CountryCode:
printf ("%s (%s)\n", $row[4][0], $row[4]["CountryCode"];
或者最好只使用数字数组并通过$ row [4] [0],$ row [4] [1]访问它; 任何帮助都会很棒。我(显然)是一个相对初学者。谢谢!
答案 0 :(得分:0)
不,它不是一个多维数组。为了对所有结果做一些事情,你应该循环结果,如:
while($row = mysqli_fetch_array($result))
{
echo $row["CountryCode"];
}
我总是喜欢使用名称而不是数字,因为它们直接访问查询列名称,因此更容易看到正在提取的值。在这个例子中,我知道在我阅读代码时会打印出CountryCode
,而不是一些随机索引。
答案 1 :(得分:0)
mysqli_fetch_array
MYSQLI_BOTH
参数的结果是一维数组。结果表示结果集中的单行。每行都是一个数组,其中包含以两种方式索引的检索数据:
数组如下所示:
$row Array (
[0] => "MyName"
[1] => "MyCountryCode"
["Name"] => "MyName"
["CountryCode"] => "MyCountryCode"
)
在同一个数组中看到数字和字符串索引是令人困惑的,但数据实际上是正确的。除非您确实需要数字索引,否则字符串索引使用起来会更加舒适。因此,函数mysqli_fetch_assoc
更适合这种情况。
但是,这些方法只返回结果集中的一行。要获取所有行,可以使用以下方法:
while( $row = mysqli_fetch_assoc( $result ) ) {
// do something with the row
}
编辑:将数据添加到多维数组:
$allResults = array();
while( $row = mysqli_fetch_assoc( $result ) ) {
$allResults[] = $row;
}
请注意,在大多数情况下,您可以按顺序处理每一行,而无需将其存储以供日后使用。
答案 2 :(得分:0)
这是不可能的,因为$ row是一个单维数组
/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);
您可以尝试使用以下
printf ("%s (%s)\n", $result[0]["CountryCode"]);
您只从mysql请求了3行,您可以使用空/空值打印第4行或更高行。这是一个未定义/数组限制超出错误
正如您使用" MYSQLI_BOTH"。因此它将显示NULL值。没有 会发生错误。