偶然错误>>>为foreach()提供的参数无效

时间:2012-07-30 20:43:43

标签: php mysql

我正在开发库存控制系统,我想编辑分配给商店的用户。可以将用户分配给一个或多个商店。我正在使用多个选择选项。我的问题是,在编辑用户页面中,我想显示分配给商店的用户选择。但是当我要这样做时,我得到了这个错误( 在第194行上为foreach()提供的无效参数 )仅当没有为所有商店分配用户时。

例如,有3家商店叫A,B和C

1.)如果我要编辑分配给所有三家商店的用户,我将不会收到任何错误 2.)如果我要编辑分配到2个商店的用户,我将在上面错误两次 3.)如果我要编辑仅分配给一个商店的用户,我将只会错误一次。

请帮我纠正一下。

这是我的代码

$emp_id = $_GET['emp_id'];
$result1 = mysql_query("Select *
                            from members
                            JOIN store_employee on members.emp_id = store_employee.emp_id
                            JOIN stores on store_employee.store_id = stores.store_id
                            where members.emp_id=$emp_id")
               or die(mysql_error());
$query="SELECT * FROM stores";
        $dropdown = "<select name='store_id[]' multiple='multiple'  style='height:80px;' size='5' id='store'>";
        $result2 = mysql_query ($query);
        while($row2 = mysql_fetch_array($result2)) 
        {

  $dropdown .= "\r\n<option value='{$row2['store_id']}'";

            foreach(mysql_fetch_array($result1) as $row1)     //this is line 194
              {
                 if(($row1['store_id'])==($row2['store_id']))
                  {
                      $dropdown .=" selected='selected'";
                  }

             }
  $dropdown .= ">{$row2['store_name']}</option>";
        }
        $dropdown .= "\r\n</select>";
        echo $dropdown;  

1 个答案:

答案 0 :(得分:1)

mysql_fetch_array绝对不会以这种方式使用,特别是考虑到它是一个函数而不是一个数组,即使它返回一个。

你想要的是这样的:

$user_stores;
while ($rows = mysql_fetch_array($result1)) {
    $user_stores[] = $rows;
}
while ($rows2...
    //...
    foreach ($user_stores as $row1) {
        //...
    }
}

如果您在另一个mysql_fetch_array内执行mysql_fetch_array,则最终可以在$row1中传递一个值,该值可能与$row2中的后续条目相匹配。这应该有助于解决问题。

此外,mysql_*函数很快就会被弃用。不要在新代码中使用它们(实际上,您应该考虑从所有代码中删除它们)。请改用mysqliPDO。如果你是一个懒惰的流浪汉(像我一样),你可以考虑使用mysqli的程序风格,这几乎与原始mysql_*函数相同。