php - 克隆表行在 php 中失败,但通过 sql shell 成功

标签 php mysql sql mariadb

克隆表行出错。你不会相信codenippet 2

抱歉。

所以,我试图在包含很多列的表中克隆一个表行。当然,我不想说出每一列的名称。 我找到了一个解决方案,并且在 mySQL WorkBench 界面(sql shell)中完美工作。在这里,我克隆 PK="TEST"的行,并且我希望结果行的 PK 为“TEST1”

CREATE TEMPORARY TABLE temp_tbl SELECT * FROM pianos WHERE pianoID = $oldPianoID;
UPDATE temp_tbl SET pianoID = '$newPianoID' WHERE pianoID = '$oldPianoID';
INSERT INTO pianos SELECT * FROM temp_tbl;
DROP TABLE temp_tbl;

但是在 php 中应用此 sql 脚本时,它失败并给出以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE temp_tbl SET pianoID = 'TEST1' WHERE pianoID = 'TEST';
                INSERT INTO ' at line 2

同样,这在 shell 中有效,但在我使用 PHP5 和 MariaDB 10.0.23 运行的服务器上无效

我认为使用 blob 存储的某些字段可能存在问题,但我无法理解这一点,因为它与 shell 一起使用。

我是否遗漏了一些明显的东西?

最佳答案

如果你查看错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE temp_tbl SET pianoID = 'TEST1' WHERE pianoID = 'TEST';
                INSERT INTO ' at line 2

您正在尝试一次执行 2 个查询 - 这是您无法通过标准 mysqli::query() 完成的- 您需要使用mysqli::multi_query()相反。

参见:http://php.net/manual/en/mysqli.multi-query.php

关于php - 克隆表行在 php 中失败,但通过 sql shell 成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920844/

相关文章:

php - 在 PHP 中访问 JSON 对象元素

php - yii2 - 多对多关系的 CRUD

php - 加载表单在同一个 div 中提交结果

php - 从mysql数据库获取图像数据时如何getimagesize()

java - 通过Java在SQL中创建变量表名?

php - 如果图像标签是从数据库动态创建的,我如何使用 javascript 或 php 来确定何时加载图像?

php - 尝试通过php输出我的数据库中最富有的用户

mysql - 语法错误: cannot recognize input near "" "in function specification

sql - 了解 SQL 中的 NOT EXISTS

mysql - 在 MySQL 中, "Overhead"是什么意思,它有什么不好的,以及如何修复它?