Дублирующая запись с multi_query возвращает 1, но не вставляет - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь продублировать запись.В таблице есть ключ автоинкремента.Все в одной поездке в БД, поэтому я использую multi_query

Возвращает 1, но запись не вставляется в БД.Из того, что я прочитал, должно возвращаться значение ИСТИНА в случае успеха или ЛОЖЬ в случае неудачи.

Правильно ли указан мой запрос?

$sql = "CREATE TEMPORARY TABLE tmp select * from TESTY where TESTY_ID = 88;
INSERT INTO TESTY SELECT MAX(TESTY_ID)+1 FROM tmp where TESTY_ID = 88;";

$mysqli->multi_query($sql);

1 Ответ

0 голосов
/ 12 мая 2018

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

Returns FALSE if the first statement failed. To retrieve subsequent errors from other statements you have to call mysqli_next_result() first.

Итак, ваше второе утверждение - это проблема. А именно, я не думаю, что вы можете выбрать SELECT MAX, увеличить значение и вставить все в одном выражении.

РЕДАКТИРОВАТЬ: Кроме того, почему вы явно устанавливаете идентификатор на свой INSERT, если поле уже auto_increment?

...