更新命令在PHP中无法正常工作

时间:2009-07-15 09:01:56

标签: php mysql

$query = "UPDATE members SET userrole ='$userrole' WHERE member_id = '$member_id'";

有时会更新,有时却不会......我不知道语法是否正确。

userrole和member_id包含值数组。对正在检查的多个项目执行更新查询。

mysql连接或错误没有错误....第一次没有发生更新,之后发生了

3 个答案:

答案 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)

  1. 除非你跳过一点,否则你不会逃避输入 - 不好!

    $userrole = mysql_real_escape_string($userrole);

  2. 如果$ 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