【发布时间】:2016-01-15 18:18:41
【问题描述】:
我正在尝试启动一个事务是 mysql 并将数据插入数据库。数据库源sql可以在githubhere找到。这是错误:
错误:开始交易;插入书籍(标题、出版日期、 PurchaseDate, Description, LocationID, GenreID) VALUES('简单 Genius', '2008-4-1','2009-5-7','','Hardbook Library','Fiction');放 @bookid = LAST_INSERT_ID();插入图书作者(名字, MiddleName, LastName) VALUES('David', '', 'Baldacci');设置@authorid = LAST_INSERT_ID(); INSERT INTO AuthorsInBooks(AuthorID, BookID) 值(@authorid,@bookid);犯罪;您的 SQL 中有错误 句法;检查与您的 MySQL 服务器版本相对应的手册 在 'INSERT INTO Books(Title, PublicationDate、PurchaseDate、Description、LocationID,'在第 3 行
'INSERT INTO Books(Title, PublicationDate, PurchaseDate, Description, LocationID,' 对我来说没有意义,因为它在 LocationID 之后缺少 GenreID。我错过了什么吗?当我将此代码复制并粘贴到 phpmyadmin 中时工作正常。我的 php 版本是 5.4。
这里是php代码:
$sql = "
START TRANSACTION;
INSERT INTO Books(Title, PublicationDate, PurchaseDate, Description, LocationID, GenreID)
VALUES('".$Title."', '".$YearWritten."','".$YearPurchased."','".$Description."','".$Location."','".$Genre."');
SET @bookid = LAST_INSERT_ID();
INSERT INTO BookAuthors(FirstName, MiddleName, LastName)
VALUES('".$AuthFirstName."', '".$AuthMiddleName."', '".$AuthLastName."');
SET @authorid = LAST_INSERT_ID();
INSERT INTO AuthorsInBooks(AuthorID, BookID)
VALUES(@authorid, @bookid);
COMMIT;
";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
【问题讨论】:
-
有人告诉我使用这个。这还不够有效吗? @user2864740 mysqli_real_escape_string
-
@JacobWilson:你可能想阅读stackoverflow.com/q/5741187,这对mysqli同样有效。