我正在开发库存控制系统,我想编辑分配给商店的用户。可以将用户分配给一个或多个商店。我正在使用多个选择选项。我的问题是,在编辑用户页面中,我想显示分配给商店的用户选择。但是当我要这样做时,我得到了这个错误( 在第194行上为foreach()提供的无效参数 )仅当没有为所有商店分配用户时。
例如,有3家商店叫A,B和C1.)如果我要编辑分配给所有三家商店的用户,我将不会收到任何错误 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;
答案 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_*
函数很快就会被弃用。不要在新代码中使用它们(实际上,您应该考虑从所有代码中删除它们)。请改用mysqli
或PDO
。如果你是一个懒惰的流浪汉(像我一样),你可以考虑使用mysqli
的程序风格,这几乎与原始mysql_*
函数相同。