这个问题在这里已经有答案了:
为什么我不能运行两个mysqli查询?第二个失败[重复](3个答案)
两年前关门了。
我正在制作一个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);
我试过的:
我反复检查了我的查询和数据库权限—我设置的db用户具有db管理器权限,这意味着它应该可以对数据库执行任何操作。如前所述,我还直接在mysql workbench中测试了我的查询,它工作正常。我唯一能想到的是,我的db用户没有正确设置,但是,如果有任何问题,它有太多的自由。
额外的信息和澄清提供的要求-如果我错过了任何重要的必要信息,请让我知道。
1条答案
按热度按时间huwehgph1#
我认为你的问题是你的陈述不止一个
$query
但你用的是$dbconn->query($query)
不支持官方文件中所述的多个声明:必须使用mysqli\u multi\u query()执行多个语句或多个查询。语句字符串的各个语句用分号分隔。然后,必须获取执行语句返回的所有结果集。
因此你需要分开你的陈述或者离开
$query
原样和用途$result = $dbconn->multi_query($query);
.