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

Alex62

Client
Joined
Oct 16, 2015
Messages
231
Reaction score
31
Points
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
Joined
Aug 25, 2021
Messages
106
Reaction score
73
Points
28
Предположу что ошибка в первой строке, где 22 вы передаёте как строку(а ожидается число), попробуйте убрать одинарные кавычки. И не забывайте блокировать таблицу, если работаете в многопотоке.
Code:
LOCK TABLE stat_temp WRITE;
INSERT INTO `stat_temp`(`from_day`) VALUES (22);
SELECT LAST_INSERT_ID();
UNLOCK TABLE;
Проверил похожий код у себя, отработал корректно:
124446

124447
 
  • Thank you
Reactions: Alex62 and volody00

Alex62

Client
Joined
Oct 16, 2015
Messages
231
Reaction score
31
Points
28
Предположу что ошибка в первой строке, где 22 вы передаёте как строку(а ожидается число), попробуйте убрать одинарные кавычки. И не забывайте блокировать таблицу, если работаете в многопотоке.
Code:
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
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,650
Points
113

Alex62

Client
Joined
Oct 16, 2015
Messages
231
Reaction score
31
Points
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
Joined
Oct 16, 2015
Messages
231
Reaction score
31
Points
28
Предположу что ошибка в первой строке, где 22 вы передаёте как строку(а ожидается число), попробуйте убрать одинарные кавычки. И не забывайте блокировать таблицу, если работаете в многопотоке.
Code:
LOCK TABLE stat_temp WRITE;
INSERT INTO `stat_temp`(`from_day`) VALUES (22);
SELECT LAST_INSERT_ID();
UNLOCK TABLE;
Проверил похожий код у себя, отработал корректно:
У вас тут подключение через MySQLClient а у меня через odbc подключение происходит, может быть дело в этом?
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)