PHP PDO语句-作为pdo->查询,而不作为pdo-> prepare

时间:2018-11-15 13:48:07

标签: php pdo

我有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准备好的语句中我在做什么错?

1 个答案:

答案 0 :(得分:2)

根据要求。

您的PHP版本(5.3.7)不支持[]的{​​{1}}数组语法。

因此,您需要将其更改为$stmt->execute([$id]);

关于数组http://php.net/manual/en/language.types.array.php的手册指出:

  

从PHP 5.4开始,您还可以使用短数组语法,该语法用[]替换array()。