首页 > 解决方案 > 无法准备 SQL 语句

问题描述

我目前正在做一个项目,在某个条件下,将汇总 TableA 的内容并插入 TableB 中,然后将新行插入 TableA 中。然而,我创建的语句似乎无法在 PHP 中准备好,尽管实际查询在 SQL 中运行良好。有人可以指导我如何解决这个问题吗?

$insert = "INSERT INTO DATABASE.TableB(ColumnB2, ColumnB3, ColumnB4, ColumnB5)
           SELECT DATE(MAX(ColumnA2)), MIN(ColumnA3), MAX(ColumnA3), AVG(ColumnA3) 
           FROM DATABASE.TableA
           ;

           DELETE 
           FROM DATABASE.TableA
           ;

           ALTER TABLE DATABASE.TableA AUTO_INCREMENT = 1
           ;

           INSERT INTO DATABASE.Current_Level(ColumnA2, ColumnA3)
           VALUES(CURRENT_TIMESTAMP, ?)
           ;";

$stmt = mysqli_stmt_init($conn);

if (!mysqli_stmt_prepare($stmt, $insert))
{
    echo "Error";
}
else
{
    mysqli_stmt_bind_param($stmt, "d", $ColumnA2);
    mysqli_stmt_execute($stmt);
}

标签: phpsqlmysqliprepared-statement

解决方案


您不能为多个 SQL 语句创建准备好的语句。您需要为这些 SQL 语句中的每一个创建一个准备好的语句。每条 SQL 语句用分号隔开;

根据 PHP 文档:

不支持将 multiple 语句与准备好的语句一起使用。

https://www.php.net/manual/en/mysqli.quickstart.multiple-statement.php


推荐阅读