可以合并为1个查询吗?
这是我试图结合的查询?还是有更好的方法将这些与桌子联系起来?
$insert_row = $mysqli->query("INSERT INTO orderlist
(TransactionID,ItemName,ItemNumber, ItemAmount,ItemQTY)
VALUES ('$transactionID','$itemname','$itemnumber', $ItemTotalPrice,'$itemqty')");
$insert_row1 = $mysqli->query("INSERT INTO order
(BuyerName,BuyerEmail,TransactionID)
VALUES ('$buyerName','$buyerEmail','$transactionID')");
当我运行这些时,只有一个查询是有效的,所以我想做的就是让它们都有效。
我对任何建议持开放态度
答案 0 :(得分:1)
您的第二个查询无效的原因是因为使用了order
而没有逃避它;它是一个MySQL保留字:
旁注:执行ORDER
SELECT... ORDER BY...
检查错误会显示语法错误,例如:
您的SQL语法有错误;在“order
附近查看与MySQL服务器版本对应的手册,以获得正确的语法
因此,请将其打包成刻度:
$insert_row1 = $mysqli->query("INSERT INTO `order` ...
或将您的表重命名为保留字以外的其他内容,例如orders
。
如果您希望合并两个查询,可以使用multi_query()
手册中的示例:
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$sql = "SELECT COUNT(*) AS _num FROM test; ";
$sql.= "INSERT INTO test(id) VALUES (1); ";
$sql.= "SELECT COUNT(*) AS _num FROM test; ";
if (!$mysqli->multi_query($sql)) {
echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
do {
if ($res = $mysqli->store_result()) {
var_dump($res->fetch_all(MYSQLI_ASSOC));
$res->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
?>
我还需要指出您的现有代码可能对SQL injection开放,因为我不知道您是否正在转发您的数据。
如果没有,请使用prepared statements或PDO with prepared statements,它们更安全。