在MySQL中使用多个UPDATE

时间:2015-06-24 12:54:39

标签: php mysql

我试图"强迫"此代码遍历每一行并更新与上述语句匹配的每一行..

if(isset($itemID1) && isset($itemID2) && isset($itemID3) && isset($itemID4) && isset($itemID5) && isset($itemID6) && isset($itemID7) && isset($itemID8) && isset($itemID9) && isset($itemID10)){    
        $upd = "UPDATE booking SET status='$status/ADM', verification='No'";
        if($CalDate !=''){
            $upd.= ",CalDate='$CalDate'";
        }
        if($DueDate !=''){
            $upd.= ",DueDate='$DueDate'";
        }
        if($groupid1 != 0){
            $upd.= " WHERE groupid IN ('$groupid1')";
        }
        if($groupid2 != 0){
            $upd.= " WHERE groupid IN ('$groupid2')";
        }
        if($groupid1 == 0){
            $upd.= " WHERE itemid IN ('$itemID1')";
        }
        if($groupid2 == 0){
            $upd.= " WHERE itemid IN ('$itemID2')";
        }
    }

已知错误:错误无法更新数据原因:您的SQL语法中存在错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在' WHERE itemid IN附近使用(' 143')'在第1行

该脚本或脚本只会更新它经过的第一行。至于groupid1!= 0

1 个答案:

答案 0 :(得分:1)

错误很可能是您构建WHERE子句的地方。

这可能是因为您在语句中添加了多个WHERE子句。您的SQL语句只能包含一个WHERE子句。

例如,如果groupid1groupid2不为0,那么您将收到以下声明:

SELECT ... WHERE groupid IN ('$groupid1') WHERE groupID IN ('$groupid2')

这显然无效。您需要添加一个WHERE子句,然后使用ANDOR添加参数,以便根据需要将它们分开:

SELECT ... WHERE groupid IN ('$groupid1') OR groupID IN ('$groupid2')