mysqli更新准备未捕获的异常

时间:2014-01-11 21:59:00

标签: php for-loop mysqli

// $ update行正常,但是准备好的语句会抛出此错误:

  

致命错误:带有消息的未捕获异常'mysqli_sql_exception'   '你的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'WHERE weekday =?'附近在第5行

for($i = 0; $i < $count; $i++){ //update all time fields 
//  $update = $mysqli->query("UPDATE storehours SET open='$open[$i]', open_2='$open_2[$i]', close='$close[$i]', close_2='$close_2[$i]' WHERE weekday ='$weekday[$i]'");

            mysqli_report(MYSQLI_REPORT_ALL);

            $stmt = $mysqli->prepare("UPDATE maxfoo SET open = ?,
                       open_2 = ?,
                       close = ?,
                       close_2 = ?,
                       WHERE weekday = ?");
                    $stmt->bind_param("sssss",
                       $open[$i],
                       $open_2[$i],
                       $close[$i],
                       $close_2[$i],
                       $weekday[$i]);
                    $stmt->execute();
                    $stmt->close();

        }

除非我不允许使用循环,否则代码对我来说似乎很完美?我不确定语法错误是什么。

1 个答案:

答案 0 :(得分:2)

在开始close_2 = ?,之前,您需要删除WHERE...末尾的逗号

$stmt = $mysqli->prepare("UPDATE maxfoo SET open = ?,
                   open_2 = ?,
                   close = ?,
                   close_2 = ?
                   WHERE weekday = ?");