我有PHP PDO准备的声明:
if ($_SERVER['REQUEST_METHOD'] =='DELETE') {
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$action = $request->action;
if ($action == "delete_todo") {
$id=$request->id;
$sql="DELETE from tblTodo where id=?";
$stmt = $db->prepare($sql);
$stmt->execute([$id]);
}
}
我正在使用Boomerang来测试API,并且每次此脚本返回“ 500内部服务器错误”时,我都会使用它。如果我将代码更改为:
if ($_SERVER['REQUEST_METHOD'] =='DELETE') {
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$action = $request->action;
if ($action == "delete_todo") {
$id=$request->id;
$sql="DELETE from tblTodo where id=".$id;
$stmt = $db->query($sql);
$stmt->execute();
}
}
应有尽有。 PDO准备好的语句中我在做什么错?
答案 0 :(得分:2)
根据要求。
您的PHP版本(5.3.7)不支持[]
的{{1}}数组语法。
因此,您需要将其更改为$stmt->execute([$id]);
关于数组http://php.net/manual/en/language.types.array.php的手册指出:
从PHP 5.4开始,您还可以使用短数组语法,该语法用[]替换array()。