php - 无法准备 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);
}
解决方案
您不能为多个 SQL 语句创建准备好的语句。您需要为这些 SQL 语句中的每一个创建一个准备好的语句。每条 SQL 语句用分号隔开;
根据 PHP 文档:
不支持将 multiple 语句与准备好的语句一起使用。
https://www.php.net/manual/en/mysqli.quickstart.multiple-statement.php
推荐阅读
- android - Switch inside TextInputLayout
- lxml - How to install lxml<4.0 with python3.7 on Amazon Linux 2
- amp-html - How can I get rid of the message that comes at the beginning of my amp-story when visited for the first time?
- c++ - How to call a copy constructor only if it exist ? c++
- nginx - Laravel:如何允许带有 php 扩展的路由?
- python - Python equivalent for the matlab A(:,1)' and A(:)
- vaadin - Vaadin 10+: How can I disable Router?
- kubernetes - GKE 托管 etcd
- django - 在 django 程序中为多对多模型编写单元测试
- wpf - CI/CD WPF setup file using Azure Pipelines