Запрос, который работает в phpmyadmin НЕ работает на странице php?

Я проверил этот запрос в phpmyadmin & он возвращает именно то, что я ищу … он дублирует row1 & обновляет заголовок до DUPLICATE.

$sql = "CREATE TEMPORARY TABLE  tmp
SELECT  `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM        unit_genData
WHERE       `unit_id`='1';
ALTER TABLE tmp
DROP COLUMN `unit_id`;
UPDATE      tmp
SET         `title` = 'DUPLICATE';
INSERT INTO unit_genData
SELECT      0,tmp.*
FROM        tmp;
DROP TABLE  tmp;";

Затем я иду и добавить его на страницу php, и …

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 'ALTER TABLE tmp DROP COLUMNunit_id; UPDATE tmp ' at line 10

Почему я получаю эту ошибку?

0

Решение

использование mysqli_multi_query() для выполнения нескольких запросов.

$sql = "CREATE TEMPORARY TABLE  tmp
SELECT  `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM        unit_genData
WHERE       `unit_id`='1';
ALTER TABLE tmp
DROP COLUMN `unit_id`;
UPDATE      tmp
SET         `title` = 'DUPLICATE';
INSERT INTO unit_genData
SELECT      0,tmp.*
FROM        tmp;
DROP TABLE  tmp;";

$mysqli->multi_query($sql);
1

Другие решения

По умолчанию PHP отключает несколько операторов в одном запросе.

Либо запустите два оператора по отдельности, либо вы можете использовать mysql_multi_query,

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

(Вопрос не указывает, какой интерфейс MySQL используется.)

Обратите внимание, что если ваш код подвержен уязвимостям SQL-инъекций, то включение нескольких операторов в запросе может открыть путь к целой куче гнусности … ala Little Bobby Tables http://xkcd.com/327/.

0

Если вы по какой-то причине используете mysql функции проходят CLIENT_MULTI_STATEMENTS как mysql_connect5-й параметр, чтобы разрешить несколько операторов в ваших запросах.

Больше информации Вот.

0
По вопросам рекламы [email protected]