我很欣赏有很多类似的问题,但经过拖网搜寻后,我仍然找不到可以帮助我的例子。
我发送以下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告诉我,我的查询正在成功添加 - 不知道发生了什么。
如果有人可以给我任何提示或指导,我会非常感激。
答案 0 :(得分:1)
请遵循我的准备语句以避免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注入。