使用 PHP 处理由 Ajax 引起的 MySQL 错误


handling a error in mysql using php caused by ajax

我正在使用ajax提交表单,

 function ajax_post() {
            // ...(code);
        var hr = new XMLHttpRequest();
        var url = "http://domain.com/submit_action.php";
        var vars = "element_1=" + ln + "&element_2=" + fn;
        hr.open("POST", url, true);
        hr.send(vars);
            // ...(code);
}

让 PHP exc 查询:

$sql = 'SELECT *
        FROM ' . table. '
        WHERE ' . $db -> sql_build_array('SELECT', $data);
$result = $db -> sql_query($sql);
$sql = 'INSERT INTO ' . table. ' ' . $db -> sql_build_array('INSERT', $data);
$db -> sql_query($sql);

在我上面的代码中,它将运行。但是当"fn"和"ln"相同或已经存在于数据库中时,就会出现错误。但是因为我使用 ajax 提交它,所以我留在表单的当前页面上而不会收到错误,也不知道查询是否 exc。

问题是,有没有办法让 php 告诉 ajax 在查询的 exc 期间发生了什么样的错误?提前谢谢。

PHP 脚本期间回显的任何内容都将返回到 hr.responseXMLhr.responseText 属性中。

在状态为 OK 时,在 hr.onreadystatechange 回调中捕获这两个值,以了解 php 中发生了什么。

hr.onreadystatechange = function() {
    if (hr.readyState == 4 && (hr.status == 200)) {
        //do something with hr.responseText
    }
}

我个人系统地将我的php答案封装在一个通用的xml响应中,具有自定义状态:error/ok/business error和自定义消息,因此我知道如何在javascript层处理它。

除此之外,我建议您捕获 1062 mysql 错误以了解该错误是由于已经存在的值引起的,并引发更用户友好的消息。