错误“为foreach()提供的参数无效”

时间:2012-08-10 19:31:08

标签: php mysql

include_once 'include/connect_db.php';
$query="SELECT tm FROM schedule WHERE val='BT009';";
$result=ejecutar_query($query);

$rows = array();

if ($result && mysql_num_rows($result)) {
    foreach ($result as $row):
        $rows[] = $row['tm'];
        echo $row['tm'];       
    endforeach;
}

我确定SQL查询应该返回1个条目。但是,echo输出'Array'。错误消息是:为foreach()提供的参数无效。

3 个答案:

答案 0 :(得分:2)

错误告诉你一切:$result实际上不是一个数组(或者至少不是一个填充的数组)。

你不能echo一个数组。在其上执行var_dump()print_r

此外,您在循环之前设置$rows = array();。 WTF,老兄?

你实际上是在说“为这个空数组的每个索引做点什么。”

而是尝试:

if (is_array($result) && count($result)) { ... }

如果$result是来自mysql查询的结果集,并且您希望遍历 ,请尝试以下操作:

if (mysql_num_rows($result)) {
    while ($row = mysql_fetch_array($result)) {
        // do stuff
    }
}

请注意:您应该停止使用mysql_*个功能。他们被弃用了。而是使用PDO(从PHP 5.1开始支持)或mysqli(从PHP 4.1开始支持)。如果您不确定使用哪一个,read this article

答案 1 :(得分:0)

我假设$ result是一个MySQL结果集,在这种情况下你不只是迭代它,你需要使用一些方法将结果集转换成如下数组:

while($row = mysqli_fetch_array($result)) {
    $rows[] = $row['tm'];
    echo $row['tm'];
}

答案 2 :(得分:0)

更改你的for循环:

while($row = mysql_fetch_array($result)) {
    $rows[] = $row['ETA'];
    echo $row['ETA'];
}
print_r($rows); // To double check