Несколько запросов mysql в zennoposter

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Добрый день, есть нужда получить последний созданный ID нашел запрос,
INSERT INTO `stat_temp`(`from_day`) VALUES ('22');
select LAST_INSERT_ID();

который работает, если делать его через phpmyadmin
но это 2 запроса
Если делать через зенку в одном действии, то выдает ошибку "Выполнение действия Db ERROR [42000] [MySQL][ODBC 8.2(w) Driver][mysqld-5.5.5-10.11.8-MariaDB]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 'select LAST_INSERT_ID()' at line 2"

А если делать в 2-х действиях, то получается не корректный результат, в ответе получаю "0"
 

usboff

Client
Регистрация
25.08.2021
Сообщения
88
Благодарностей
48
Баллы
18
Предположу что ошибка в первой строке, где 22 вы передаёте как строку(а ожидается число), попробуйте убрать одинарные кавычки. И не забывайте блокировать таблицу, если работаете в многопотоке.
Код:
LOCK TABLE stat_temp WRITE;
INSERT INTO `stat_temp`(`from_day`) VALUES (22);
SELECT LAST_INSERT_ID();
UNLOCK TABLE;
Проверил похожий код у себя, отработал корректно:
124446

124447
 
  • Спасибо
Реакции: Alex62 и volody00

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Предположу что ошибка в первой строке, где 22 вы передаёте как строку(а ожидается число), попробуйте убрать одинарные кавычки. И не забывайте блокировать таблицу, если работаете в многопотоке.
Код:
LOCK TABLE stat_temp WRITE;
INSERT INTO `stat_temp`(`from_day`) VALUES (22);
SELECT LAST_INSERT_ID();
UNLOCK TABLE;
Проверил похожий код у себя, отработал корректно:
Хоть с блокировкой таблицы, хоть без блокировки выдает ошибку
"Выполнение действия Db ERROR [42000] [MySQL][ODBC 8.2(w) Driver][mysqld-5.5.5-10.11.8-MariaDB]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 'INSERT INTO `stat_temp`(`from_day`) VALUES (22);
SELECT LAST_INSERT_ID();
U...' at line 2"
Поле типа Int и передаю переменную число, в занесении и создании проблем никаких нет, а если использую несколько строк с разделителем ";" это вызывает трудности, как я понял
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
попробуй одной строкой
Все равно не помогает
"Выполнение действия Db ERROR [42000] [MySQL][ODBC 8.2(w) Driver][mysqld-5.5.5-10.11.8-MariaDB]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 'SELECT LAST_INSERT_ID()' at line 1"
 

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Предположу что ошибка в первой строке, где 22 вы передаёте как строку(а ожидается число), попробуйте убрать одинарные кавычки. И не забывайте блокировать таблицу, если работаете в многопотоке.
Код:
LOCK TABLE stat_temp WRITE;
INSERT INTO `stat_temp`(`from_day`) VALUES (22);
SELECT LAST_INSERT_ID();
UNLOCK TABLE;
Проверил похожий код у себя, отработал корректно:
У вас тут подключение через MySQLClient а у меня через odbc подключение происходит, может быть дело в этом?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)