将行插入2个单独的表时出现MySQL错误

时间:2015-03-28 23:13:57

标签: php mysql insert

我试图同时将数据插入2个单独的表中 - 但是收到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'INSERT INTO
StoreTable (Name, Price, Description, ImageName, Colors, Sizes, SKU,' at line 1

这是我的代码:

// INSERT the NEW Store Item & its image into the database:
$query = "BEGIN; INSERT INTO StoreTable(Name, Price, Description, ImageName, Colors, 
Sizes, SKU, Category, DateAdded) VALUES ('". $newStoreItemName ."', '". $newStoreItemPrice ."',
'". $newStoreItemDescription ."', '". $newStoreItemImageName ."',
'". $newStoreItemColors ."',  '". $newStoreItemSizes ."',  '".$StoreNewItemSKU."',  
'".$newStoreItemCategory."', '".$storeItemDateAdded."'); 
INSERT INTO StoreCategoriesTable (CategoryName, DateModified) VALUES('".$newStoreItemCategory ."',
'". $storeItemDateAdded."'); COMMIT;";

    // Echo the query statement to see what it looks like:
    echo "Here's the full query:<br/><br/>" .$query. "<br/><br/>";

    $result = $mysqli->query($query);

那个echo语句表明看起来像是一个正确的MySQL语句 - 但显然它不是因为我收到了错误:

BEGIN; INSERT INTO StoreTable (Name, Price, Description, ImageName, Colors, 
Sizes, SKU, Category, DateAdded) VALUES ('Shirt', '12.98', '100% Cotton', 
'TShirt.Png', 'Red, Blue, Black', 'S, M, L', '88nnkLb', 'Childrens Apparel',
'2015-03-28 15:51:41'); INSERT INTO StoreCategoriesTable (CategoryName,
DateModified) VALUES('Childrens Apparel', '2015-03-28 15:51:41'); COMMIT;

由于我是一名拥有最少MySQL知识的iOS开发人员,所以我非常感谢您提供帮助。谢谢!

1 个答案:

答案 0 :(得分:3)

作为php的安全功能,您只能使用mysqli::query()一次运行一个查询。我建议您将这些查询分解为单独的查询,确保它们正确保存,然后将它们提交到数据库。有一个很好的例子可以找到here

另外:您可以查看mysqli::multi_query,这可以获得类似的结果。

我在这里还有另外一件事要提。 请注意安全性!执行这样的查询会打开数据库以进行SQL注入攻击。我强烈建议你看一下如何将参数绑定到查询this。 (这将自动逃避确保查询无问题地运行所需的一切。)