为 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()
。
我正在尝试构建 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()
。