我正在尝试构建将返回到我的ajax成功的数组。如何在将数组绑定到类似的变量之后构建数组:
以下脚本运行完成,并且没有任何问题插入到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));
}
答案 0 :(得分:2)
根据OP的愿望:
按照"id" => ':id'
"id" => ':id', "comment" => ':comment', "transaction" => ':transaction'
另外,引用Jeroen(kudos to)
为什么不使用$_POST
变量?它包含您需要的值,并且您已在数据库查询中使用它们。
答案 1 :(得分:1)
调用->bindParam()
后,您无法检索绑定值;此外,变量$comment
和$transaction
尚未定义(除非您自己设置或使用voodoo php设置)。
那就是说,你已经知道了这些价值观:
$response = array(
'state' => 200,
"success" => true,
"id" => $_POST['id'],
"comment" => $_POST['comment'],
"transaction" => $_POST['transaction'],
);
顺便说一下,在异常分支中你有一个小bug:
$data = array("success" => false, "sentence" => $sql, "error" => $e.getMessage());
^
您应该使用$e->getMessage()
代替。