0

我正在使用一个数据库查询,它接受一个州和城市,然后吐出 10 个字段。目前我只能使用 print_r 查看这些字段。我在php手册站点上尝试了一个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 所在的字段名称以及冒号后右侧的值。

4

4 回答 4

3

您的数组键是'id', etc. 数组的, etc. 索引中'zip_code'没有任何内容。01

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";
}
于 2012-06-28T15:54:36.277 回答
3

您正在使用 mysql_fetch_assoc 获取,因此将循环更改为

foreach($row as $key => $value){
echo "Array key : $key = $value <br/>";
}
于 2012-06-28T15:55:32.417 回答
0

是的,因为它返回一个关联数组这意味着您必须像这样访问元素:例如 $row["id"]

你想要的是这个

foreach($row as $key => $value)
echo "arrayName at[" . $key . "] is: [" .$value . "]<br>\n";
于 2012-06-28T15:55:20.237 回答
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

于 2012-06-28T15:58:31.577 回答