Двe sql команды за один запрос

1 23
IL
На сайте с 20.04.2007
Offline
435
#21
Aisamiery:
Ведь прежде всего этот синтаксис поддерживается именно сервером БД,

В том-то и дело, что не сервером, но ещё и используемым при подключении драйвером.. а также параметрами подключения и конкретной используемой функцией

https://dev.mysql.com/doc/refman/8.0/en/c-api-multiple-queries.html

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Aisamiery
На сайте с 12.04.2015
Offline
317
#22

ivan-lev, что вы уперлись в мультизапросы и драйвера

Вот вам ссылочка

Где написано:

The queries shown thus far have been relatively short, single-line statements. You can even enter multiple statements on a single line. Just end each one with a semicolon:

и дан пример


mysql> SELECT VERSION(); SELECT NOW();
+-----------+
| VERSION() |
+-----------+
| 8.0.13 |
+-----------+
1 row in set (0.00 sec)

+---------------------+
| NOW() |
+---------------------+
| 2018-08-24 00:56:40 |
+---------------------+
1 row in set (0.00 sec)

Вы же даете на апи языка C, я не спорю с вами что есть такие функции и не спорю что они нужны, если нужно правильно обработать возвращаемое значение. Но такой задачи не ставил ТС, прочитайте внимательно стартовое сообщение. И для того, чтобы выполнить 2 запроса не нужно никаких специальных параметров и подключений.

Вот тут тоже объясняется что делает точка с запятой

Semicolon is the standard way to separate each SQL statement in database systems that allow more than one SQL statement to be executed in the same call to the server.

В драйверах требуется специальный флаг, для того, чтобы по умолчанию предотвратить SQL Injection, для самого синтаксического анализатора не нужны никакие флаги, он свободно обработает запросы разделенные точкой запятой.

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
S
На сайте с 30.09.2016
Offline
469
#23
Aisamiery:
требуется специальный флаг, для того, чтобы по умолчанию предотвратить SQL Injection

Вот здесь ты ошибаешься. Флаг нужен, чтобы позволить мультизапрос.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
IL
На сайте с 20.04.2007
Offline
435
#24
Aisamiery:
ivan-lev, что вы уперлись в мультизапросы и драйвера

Отнюсь.. и не думал "упираться". Пытаюсь пояснить, где Вы заблуждаетесь.. Только и всего. С попыткой аргументации ссылкой на официальную доку ))

Aisamiery:
Вот вам ссылочка

Там описывается работа из командной строки.. (читать mysql-client, который тоже использует определённый драйвер для подключения...)

Sitealert:
Флаг нужен, чтобы позволить мультизапрос.

Строго говоря, там не один флаг.. А вообще, флаги нужны чтоб клиент с сервером на одном языке разговаривали.. 😂

Возвращает сервер клиенту "мультиответ", а тот - ждёт обычный.. и "хз чО" с этим ответом делать..

Естественно, что для обычного пользователя всё это сокрыто "где-то под капотом", но всё же в этом разделе можно немного технических подробностей для искушённых.. Вполне ожидаемо, что ТС-у это всё не интересно.. Однако.. ))

---------- Добавлено 12.04.2020 в 19:44 ----------

Aisamiery:
Вот тут тоже объясняется что делает точка с запятой

Я, вроде как и не спорил.. Просто объясняю, что она не всегда работает.. И в зависимости от прослойки между пользователем (человеком) и SQL-сервером (включая не только драйвер/клиент, но и, к примеру, браузер).. может работать по-разному..

By default, mysql_query() and mysql_real_query() interpret their statement string argument as a single statement to be executed,
1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий