在php中使用临时表执行多个查询
我有以下查询,复制表中的一行并更改几列在php中使用临时表执行多个查询,php,mysql,sql,Php,Mysql,Sql,我有以下查询,复制表中的一行并更改几列 CREATE TEMPORARY TABLE temp_table AS SELECT * FROM table1 WHERE offertecode = '1c12a23453453458e492230df420972'; UPDATE temp_table SET offertecode = '82a24c7da2342423424351804ab043', id = N
CREATE TEMPORARY TABLE temp_table AS
SELECT *
FROM table1
WHERE offertecode = '1c12a23453453458e492230df420972';
UPDATE temp_table
SET offertecode = '82a24c7da2342423424351804ab043',
id = NULL,
reference = '[COPY] subject';
INSERT INTO table1
SELECT *
FROM temp_table;
DROP TEMPORARY TABLE temp_table;
这在phpmyadmin中运行得非常好,但我无法在PHP中运行,我得到一个错误:
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax
to use near 'UPDATE temp_table SET offertecode = '82a24c7da2342423424351804ab043',
id = ' at line 5
有谁能帮助我在PHP中执行这个查询吗
PHP代码:
$mysqli->query("CREATE TEMPORARY TABLE temp_table AS
SELECT *
FROM table1
WHERE offertecode = '1c12a23453453458e492230df420972';
UPDATE temp_table
SET offertecode = '82a24c7da2342423424351804ab043',
id = NULL,
reference = '[COPY] subject';
INSERT INTO table1
SELECT *
FROM temp_table;
DROP TEMPORARY TABLE temp_table;");
谢谢 这并没有解决mysqli的问题,在一个查询中有四条语句。你应该把它们分开运行。但是,您不需要四条语句。只要做:
insert into table1(offertecode, id, reference, <rest of columns>)
select '82a24c7da2342423424351804ab043' as offertecode, NULL as id, '[COPY] subject' as reference,
<rest of columns>
from table1
where offertecode = '1c12a23453453458e492230df420972';
插入。select语句可以在两部分中引用同一个表。即使在MySQL中。您也需要使用$mysqli->multi\u查询。基本答案是不能使用$mysqli->query运行多个查询。语法错误是由于第二个查询试图在$mysqli->query下运行,该查询只允许一个主查询。该查询可以包含子查询或嵌套查询,但只能包含一个主查询。要运行多个查询,您必须使用$mysqli->multi_queryPHP代码比包装在mysqli->query中的查询要简单得多;但早些时候有人评论说,我认为应该在多个语句中完成这一点已被删除。这是可行的,但我仍然希望它能在一个查询中起作用。