繁体   English   中英

Mysqli准备给出错误,即使SQL语句有效?

[英]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语句。

一种执行所需操作的方法是创建一个存储过程。

来自mysqli_prepare()文档

准备SQL查询,并返回一个语句句柄,以用于对该语句的进一步操作。 查询必须包含单个SQL语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM