我正在使用一个db查询,它接收一个州和城市,然后吐出10个字段。目前我只能通过使用print_r来查看这些字段。我在php manual site a for循环上尝试了一个建议来打印字段但是我无法让它正常工作。这是代码:
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
print_r($row)."</p>";
$arrayLength = count($row);
for ($i = 0; $i < $arrayLength; $i++){
echo "arrayName at[" . $i . "] is: [" .$row[$i] . "]<br>\n";
}
}
}
这就是结果:
Array ( [id] => 1299 [zip_code] => 04011 [city] => Brunswick [county] => Cumberland [state_name] => Maine [state_prefix] => ME [area_code] => 207 [time_zone] => Eastern [lat] => 43.9056 [lon] => -69.9646 ) ....
arrayName at[0] is: []
arrayName at[1] is: []
arrayName at[2] is: []
arrayName at[3] is: []
arrayName at[4] is: []
arrayName at[5] is: []
arrayName at[6] is: []
arrayName at[7] is: []
arrayName at[8] is: []
arrayName at[9] is: []
为什么我无法正确打印字段及其值?如果查询返回多行,我的代码也会失败,因为当前代码实际上不能容纳它。
我把$ i放在for循环的主体中,看看它是否正常工作。理想情况下,我会得到$ i所在的字段名称和冒号后右边的值。
答案 0 :(得分:3)
您的数组键是'id'
,'zip_code'
等。数组的0
,1
等索引中没有任何内容。
foreach ($row as $key => $value) {
echo "arrayName at[" . $key . "] is: [" . $value . "]<br>\n";
// which is the same as:
echo "arrayName at[" . $key . "] is: [" . $row[$key] . "]<br>\n";
}
答案 1 :(得分:3)
你正在使用mysql_fetch_assoc获取 将循环改为
foreach($row as $key => $value){
echo "Array key : $key = $value <br/>";
}
答案 2 :(得分:0)
是的,因为它会返回一个关联数组 这意味着你必须像这样访问元素: $ row [&#34; id&#34;]例如
你想要的是这个
foreach($row as $key => $value)
echo "arrayName at[" . $key . "] is: [" .$value . "]<br>\n";
答案 3 :(得分:0)
使用mysql_fetch_array()而不是mysql_fetch_assoc()
mysql_fetch_assoc()将返回一个关联数组,只能通过$ row ['name']访问。 使用mysql_fetch_array(),您可以获取关联数组,数字数组或两者。
看看这里:http://www.php.net/manual/en/function.mysql-fetch-array.php