$query = "UPDATE members SET userrole ='$userrole' WHERE member_id = '$member_id'";
有时会更新,有时却不会......我不知道语法是否正确。
userrole和member_id包含值数组。对正在检查的多个项目执行更新查询。
mysql连接或错误没有错误....第一次没有发生更新,之后发生了
答案 0 :(得分:3)
如果两个变量都包含数组,则无法使用。您需要逐个更新项目(或使用笨拙的MySql CASE语句,我在此不再解释):
foreach ($userrole as $key => $role) {
$query = "UPDATE members SET userrole ='$role'
WHERE member_id = '$member_id[$key]'";
// perform query ...
}
或者只有$ member_id是一个数组:
$query = "UPDATE members SET userrole ='$userrole'
WHERE member_id IN ('" . implode(',', $member_id) . "')";
// perform query ...
您应该进一步重命名变量以反映它们是数组。只需使用复数:
$userrole => $userroles
$member_id => $member_ids
更重要的是:这些值是否来自HTML表单?如果是,you should really使用mysql_escape_string()
清除它们。可以使用array_map()
:
$userroles = array_map('mysql_escape_string', $userroles);
$member_ids = array_map('mysql_escape_string', $member_ids);
答案 1 :(得分:1)
除非你跳过一点,否则你不会逃避输入 - 不好!
$userrole = mysql_real_escape_string($userrole);
如果$ member_id是一个数组,那么你不能把它放到这样的更新中。 我怀疑你想要这样的东西(当然逃脱之后!)
$query = "UPDATE members SET userrole ='$userrole' WHERE member_id IN (" . implode(",", $member_id) . ")";
答案 2 :(得分:0)
这都是关于调试的。首先,我会检查是否有一个mysql错误让你开始。
$query = "UPDATE members SET userrole ='$userrole' WHERE member_id = '$member_id'";
echo mysql_errno($yourmysqlconnection) . ": " . mysql_error($yourmysqlconnection) . "\n"
然后双击你的$ userrole和$ memberid变量。在此发布您的发现,我们可能会进一步帮助您
祝你好运, rAyt