[英]Mysqli prepare giving error, even though SQL statement is valid?
我在使用PHP和mySQL进行SQL事务时遇到了一些麻烦。 这是我的发言:
START TRANSACTION;
INSERT INTO listings (title, price, seller, description, time, featured)
VALUES (?, ?, ?, ?, ?, 0);
SELECT @listingid:=LAST_INSERT_ID();
INSERT INTO pictures (listid, primarypic)
VALUES (@listingid, 1);
COMMIT;
虽然当我直接使用phpMyAdmin(替换?标记)时这个语句工作正常,但是当我打电话时似乎失败了
$stmt = $mysqli->prepare("statement");
将“声明”替换为上述声明。 它在到达$ stmt的bind_param之前失败的事实使我相信它不是参数的问题,而是查询。
如果有帮助,这是确切的错误:
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第2行的“INSERT INTO列表(标题,价格,卖家,描述,时间,特色)”附近使用正确的语法
在此先感谢您的帮助!
我不认为mysqli
可以处理这样的复合语句(特别是因为有一个单独的commit()
函数)。 而不是START TRANSACTION;
在开始和COMMIT;
最后,你要做$mysqli->autocommit(false);
在查询和$mysqli->commit();
当你完成了。
问题是你只能“准备”一个SQL语句 - 你试图在这里准备五个SQL语句。
一种执行所需操作的方法是创建一个存储过程。
准备SQL查询,并返回一个语句句柄,以用于对该语句的进一步操作。 查询必须包含单个SQL语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.