在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_query

PHP代码比包装在mysqli->query中的查询要简单得多;但早些时候有人评论说,我认为应该在多个语句中完成这一点已被删除。这是可行的,但我仍然希望它能在一个查询中起作用。