更新查询不起作用,但代码似乎正常

时间:2019-03-04 18:45:29

标签: php mysql mysqli

这是我正在使用的查询字符串,我尝试了许多不同的方法...

if (!mysqli_query($db_connection,'UPDATE `questions` SET 
`question`='.$question.', `answer1`='.$answer1.', `answer2`='.$answer2.', 
`answer3`='.$answer3.', `answer4`='.$answer4.', `rationale`='.$rationale.', 
`resources`='.$resources.' WHERE `question_id`='.$id))
            {
                echo("Error description: " . mysqli_error($db_connection));
            }

这是我得到的错误:

  

错误描述:您的SQL语法有错误;检查   与您的MySQL服务器版本相对应的手册   语法。

我尝试使用单引号,不带`和with的双引号。似乎没有任何作用。

3 个答案:

答案 0 :(得分:0)

这不是使用单引号或双引号的情况,而是正确地执行了这两种情况,您需要将字符串用双引号引起来,并用单引号打开和关闭连接,例如'answer'=“'。$ variable。',,。 ....然后,引号成为字符串的一部分。

答案 1 :(得分:0)

尝试一下:

$query = mysqli_query($db_connection,"UPDATE `questions` SET question`='{$question}',`answer1`='{$answer1}', `answer2`='{$answer2}', `answer3`='{$answer3}', `answer4`='{$answer4}', `rationale`='{$rationale}', `resources`='{$resources}' WHERE `question_id`=".$id);
if ($query)
{
   echo("Error description: " . mysqli_error($db_connection));
}

答案 2 :(得分:0)

首先,正如评论所述,准备好的陈述是必经之路。您愿意接受SQL注入。

第二,关于mysql错误消息,看起来您在查询末尾缺少单引号。 WHERE question_id='.$id。同时回显查询字符串,您会发现查询的参数中没有单引号。您正在使用单引号创建查询字符串,但未创建查询参数。查询字符串使用双引号,参数使用单引号:

"UPDATE `questions` SET 
`question`='".$question."', `answer1`='".$answer1."', `answer2`='".$answer2."', 
`answer3`='".$answer3."', `answer4`='".$answer4."', `rationale`='".$rationale."', 
`resources`='".$resources."' WHERE `question_id`="'.$id."'"