更新查询不能从PHP工作,但如果copypast它工作正常

时间:2018-06-06 10:52:08

标签: php mysql sql

我这里有这个代码,它会生成一系列更新查询,但它不起作用。

$query = null;
$chk = null;
$l_id = null;
foreach ($result as $key => $value) {
    if($value === true){
        $chk = '1';
    }else {
        $chk = 'NULL';
    }
    $l_id = (int)ltrim($key, 'checkbox-');
    $query .= "UPDATE progress SET checked = $chk WHERE account_id = $id AND lesson_id = $l_id;";
}
$res = mysqli_query($connection, $query);

但与此同时,当我在此代码的末尾添加“die($query);”并在phpMyAdmin中复制它时,它的工作正常。 例如:

UPDATE progress SET checked = 1 WHERE account_id = 5 AND lesson_id = 5;UPDATE progress SET checked = 1 WHERE account_id = 5 AND lesson_id = 6;

Mysqli_error说:

  

您的SQL语法有错误;请查看手册   对应于您的MySQL服务器版本,以便使用正确的语法   'UPDATE progress SET checked = 1 WHERE account_id = 5 AND附近   第1行的lesson_id = 6'

P.S。对不起,如果语言错了,我是俄语))

2 个答案:

答案 0 :(得分:2)

您必须使用mysqli_multi_querymysql_query仅用于单个查询

$res = mysqli_multi_query($connection, $query);

有关更多信息,请阅读documentation

答案 1 :(得分:-1)

您将$chk设置为字符串值,但在其周围插入'单引号。

$chk设为1NULL,或将更新更改为SET checked = '$chk'