AJAX PHP调用localhost数据库返回错误

时间:2018-01-14 03:25:32

标签: php jquery mysql ajax database

我正在创建一个带有按钮的Web应用程序库,单击该按钮会调用checkout()函数。此函数使用jQuery将数据发布到PHP脚本。然后,这个PHP连接到localhost上的数据库(现在)并发送查询。

在MySQL Workbench中执行时,下面的PHP中显示的查询工作正常。当我尝试从网页上执行它时,我的问题出现了。它与db用户和密码连接得很好,但查询本身也失败了。

HTML

<div class="col-xs-4 btn btn-default button" onclick="checkout();">
    Checkout
</div>

JS

function checkout() {
    let result=$.ajax({
        type: "POST",
        url: "php/checkout.php",
        dataType: "text",
        //@TODO: add scanner functionality to populate isbn,
        //  add functionality to populate user
        data:
        {
            isbn: 1,
            user: 1
        },
        success: function(result) {
            //change #button-text to house result (for now)
            // @TODO: delete errorcheck when done
            $('#button-text').html(result);
            console.log(result);
        },
        error: function(xhr, status, error) {
            alert(status + ' ||| ' + error);
        }
    });
}

PHP

    $dbconn = connectToDB($serverName, $dbName, $dbUser, $dbPass);
    // set is_available to false, update checkout and due
    // date, update current owner of book, set due_date to
    // current date + 14 days
    $query = "UPDATE books
                    SET is_available = false,
                        checkout_date = CURDATE(),
                        due_date = DATE_ADD(CURDATE(),
                        INTERVAL 14 DAY)
                    WHERE isbn = $isbn;

                    INSERT INTO currently_checked_out_books
                    (user_id, book_isbn, due_date)
                    VALUES (
                        $user,
                        $isbn,
                        DATE_ADD(CURDATE(), INTERVAL 14 DAY)
                    );";
    // $query = "show tables;"; // returns what you'd expect
    $result = $dbconn->query($query);

我尝试过的事情:

我对我的查询和数据库权限进行了双重和三重检查 - 我设置的数据库用户具有数据库管理员权限,这意味着它应该能够对数据库执行任何操作。如前所述,我还在MySQL Workbench中直接测试了我的查询,并且它运行正常。我唯一能想到的是我的数据库用户设置不正确,但如果它有任何太多自由的话。

根据要求提供的其他信息和说明 - 如果我错过了任何重要的信息,请告知我们。

1 个答案:

答案 0 :(得分:2)

我认为您的问题是您在$query中有多个语句,但是您使用的$dbconn->query($query)不支持多个语句,如official documentation中所述:

  

必须执行多个语句或多个查询   mysqli_multi_query()。声明的个别陈述   字符串用分号分隔。然后,返回所有结果集   必须提取已执行的语句。

因此,您需要拆分语句或保留$query,并使用$result = $dbconn->multi_query($query);