PDO更新无法正常工作,但没有错误

时间:2017-09-07 22:16:45

标签: php pdo sql-update

我很欣赏有很多类似的问题,但经过拖网搜寻后,我仍然找不到可以帮助我的例子。

我发送以下JSON数组:

 {
  "operation": "question_edit",
  "question": {
  "questionStringEdit": "This is a question",
  "question_id": "3"
  }
}

最终发送到此PDO更新查询

public function editQuestion($questionStringEdit, $question_id){


$sql = "UPDATE question SET questionString =: $questionStringEdit WHERE question_id =: $question_id;";


// Prepare statement
$query = $this ->conn ->prepare($sql);

// execute the query
$query->execute();


if($query){


    return true;


} else {

    return false;

}

}

这是我数据库中的表格

CREATE TABLE question(
question_id int(11) NOT NULL AUTO_INCREMENT,
unique_id varchar(23) NOT NULL,
questionString varchar(50) NOT NULL,
PRIMARY KEY (question_id)
);

我试图解决问题的事情

我使用了Postman并添加了var_dump($sql); echos 'UPDATE question SET questionString =: This is a question WHERE question_id =: 3;'。对我来说,这个查询看起来应该在我的数据库中更新,但是当我检查它时,没有任何改变。

我试过在我的字符串变量$ questionStringEdit周围添加引号,但这也没有帮助。

我还没有添加我的连接详细信息,因为我有大量的查询都添加得很好 - 我刚刚在这里打了一堵砖。

Postman告诉我,我的查询正在成功添加 - 不知道发生了什么。

如果有人可以给我任何提示或指导,我会非常感激。

3 个答案:

答案 0 :(得分:1)

PHP PDO准备好的声明放置持有人错误

请遵循我的准备语句以避免SQL注入

将其替换为旧代码

//PDO Prepared statement by Ajmal Praveen
$sql = "UPDATE question SET questionString= :questionString WHERE question_id= :question_id";
$query = $this ->conn ->prepare($sql);
$query->execute(array(
':questionString' => $questionStringEdit,
':question_id' => $question_id
));
//Below You can modify as you need.
if($query){


    return true;


} else {

    return false;

}

如果您遇到任何问题,请更新我...谢谢。

答案 1 :(得分:0)

您的查询必须如下所示:

$sql = "UPDATE question SET questionString = '$questionStringEdit' WHERE question_id = '$question_id'";

答案 2 :(得分:0)

使用参数绑定而不是字符串插值。 它既可以解决您的问题,也可以防止SQL注入。

http://php.net/manual/en/pdostatement.bindparam.php