为 PDO 绑定参数后构建响应数组

Building a response array after binding parameters for PDO

我正在尝试构建 return 我 ajax 成功的数组。在将数组绑定到类似 :some variable.

之后如何构建数组

以下脚本运行完成,并毫无问题地插入 sql。但是变量 comment 和 transaction 在响应中返回为 null。我认为问题是在构建数组时使用 $comment 和 $transaction 。在数组中引用这些值的正确方法是什么?

        require('../dbcon2.php');
        //Connection 1
        try {
          $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
          $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          $stmt = $conn->prepare("UPDATE listings SET comment = :comment, transaction = :transaction, ad_link = :ad_link WHERE id = :id");
            // Bind
            $stmt->bindParam(':id', $_POST['id']);
            $stmt->bindParam(':comment', $_POST['comment']);
            $stmt->bindParam(':transaction', $_POST['transaction']);
          $stmt->execute();
          // Build array
           $response = array
                 ('state'  => 200, "success" => true, "id" => ':id', "comment" => $comment, "transaction" => $transaction 
                 );
          exit(json_encode($response));

        }
    catch (Exception $e) {
                // create a asociative array
                $data = array("success" => false, "sentence" => $sql, "error" => $e.getMessage());
                // encode data and exit.
                exit(json_encode($data));
            }

按照OP的意愿:

"id" => ':id' 那样做

"id" => ':id', "comment" => ':comment', "transaction" => ':transaction'

此外,引用 Jeroen 的话(向他致敬)

为什么不使用$_POST变量呢?其中包含您需要的值,并且您已经在数据库查询中使用了它们。

调用后无法检索绑定值->bindParam();此外,变量 $comment$transaction 未定义(除非您自己设置它们或使用 voodoo php 设置)。

也就是说,您已经知道这些值:

$response = array(
   'state'        => 200, 
    "success"     => true, 
    "id"          => $_POST['id'], 
    "comment"     => $_POST['comment'], 
    "transaction" => $_POST['transaction'], 
);

顺便说一句,在异常分支中你有一个小错误:

$data = array("success" => false, "sentence" => $sql, "error" => $e.getMessage());
                                                                   ^

您应该改用 $e->getMessage()