Я проверил этот запрос в 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 COLUMN
unit_id; UPDATE tmp ' at line 10
Почему я получаю эту ошибку?
использование 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);
По умолчанию PHP отключает несколько операторов в одном запросе.
Либо запустите два оператора по отдельности, либо вы можете использовать mysql_multi_query
,
http://php.net/manual/en/mysqli.quickstart.multiple-statement.php
(Вопрос не указывает, какой интерфейс MySQL используется.)
Обратите внимание, что если ваш код подвержен уязвимостям SQL-инъекций, то включение нескольких операторов в запросе может открыть путь к целой куче гнусности … ala Little Bobby Tables http://xkcd.com/327/.
Если вы по какой-то причине используете mysql
функции проходят CLIENT_MULTI_STATEMENTS
как mysql_connect
5-й параметр, чтобы разрешить несколько операторов в ваших запросах.
Больше информации Вот.