【发布时间】:2015-10-13 04:51:21
【问题描述】:
我在使用AJAX 调用的PHP 文件中有一个失败的 PDO Prepared DELETE 语句。
我的AJAX 电话如下所示:
var data = {action: "deleteTask", value: "1"};
$.ajax({
type: "POST",
dataType: "json",
url: "ajax.php",
data: data,
success: function(data) {
alert(data);
},
error: function() {
alert("Something's wrong!");
}
});
我的ajax.php 看起来像这样:
<?php
...
function delete(){
$return = "something must be right...";
require('connect.php');
$sql = "DELETE FROM 'tasks' WHERE 'task_id' = ?";
$stmt = $dbcon->prepare($sql);
$stmt->execute(array($_POST["value"]));
$return["json"] = json_encode($return);
echo json_encode($return);
}
?>
这是connect.php的示例:
<?php
// Configuration
$username = 'me';
$password = '1234';
$server = 'localhost';
$database = 'mydb';
try {
$dbcon = new PDO("mysql:host=$server;dbname=$database",$username,$password);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $er) {
echo 'ERROR: ' . $er->getMessage();
}
?>
我已经确定的几件事:
1) 如果我注释掉与 PDO 语句相关的所有内容,我的 ajax 调用工作正常;
2) 我的connect.php 文件有效,因为我已经使用标准的HTML 表单对其进行了测试(而不是从ajax 调用它);
3) 表名和数据库字段名没有错别字;
4)$_POST["value"] 给出了与我尝试delete 的记录相对应的正确值。
5)当我在与 PDO 相关的每一行上设置刹车点时,当我在该行:$stmt->execute(array($_POST["value"])); 并单击“Step Into”时,它会直接跳转到Ajax 中的alert("Something's wrong!");(没有执行任何操作)该行之后的ajax.php)
我花了很多时间试图找出问题所在,并阅读了有关该主题的所有帖子,但我的问题似乎很特殊,因此非常感谢任何帮助!谢谢。
【问题讨论】:
-
您有语法错误,但您没有检查错误。问题在这里很明显
-
另一个问题不是关于准备好的语句。我似乎也有一个问题,特别是因为 ajax.php 是从 Ajax 外部调用的。如果我用简单的 HTML 表单和 POST 方法调用它,它就可以工作。