如何组合查询多个能够保存数据

时间:2015-08-26 02:50:32

标签: php mysql

可以合并为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')");

当我运行这些时,只有一个查询是有效的,所以我想做的就是让它们都有效。

我对任何建议持开放态度

1 个答案:

答案 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 statementsPDO with prepared statements它们更安全