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


Error "Invalid argument supplied for foreach()"

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 个条目。但是,回声输出"数组"。错误消息是:为 foreach() 提供的参数无效。

错误告诉你一切:$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 开始支持)。如果您不确定要使用哪一个,请阅读本文。

更改你的 for 循环:

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

我假设$result是一个MySQL结果集,在这种情况下,您不仅要迭代它,还需要使用某种方法将结果集转换为数组,例如:

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