2012-08-10 97 views
-2
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()提供的无效参数。错误“为foreach()提供的无效参数”

+0

什么是'ejecutar_query'。这听起来像脏东西:D – PeeHaa 2012-08-10 19:33:41

+0

这个功能会导致查询。毫无疑问,它工作正常。 – Gusgus 2012-08-10 19:34:11

+0

在这种情况下,您可能需要更改为'execute_query' :) – PeeHaa 2012-08-10 19:36:09

回答

0

改变您的for循环:

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

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

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

另外,您在循环之前设置了$rows = array();。跆拳道,伙计?

你基本上说“对于这个空阵列的每个索引......做东西。”

而是尝试:

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

+0

请停止链接到那个可怕的“SO文章” – 2012-08-10 19:42:26

+0

@tereško当人们停止使用已弃用的函数时,我会停止尝试纠正它们。 – Matt 2012-08-10 19:43:19

+2

@tereško如果你不喜欢它,建议一个替代方案。成为社区的一部分。 – Matt 2012-08-10 19:44:18

0

我假设$结果是一个MySQL的结果集,在这种情况下,你不只是遍历它,你就需要用一些方法把结果设置为一个数组,如:

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