Какие команды MYSQL по определению * не * возвращают результат? - PullRequest
2 голосов
/ 26 марта 2012

Я пишу класс на PHP для обработки запросов MySQLI, и когда запрос обрабатывает , а не для возврата набора результатов (или объекта), я хочу выдать полезное сообщение об ошибке. Но, конечно, не все запросы предназначены для возврата набора результатов (например, ALTER), поэтому я хочу отфильтровать те запросы, которые этого не делают.

По моим расчетам, запросы, которые могут возвращать или не возвращать набор результатов:

  • ВЫБРАТЬ
  • ПОКАЗАТЬ
  • СОЗДАТЬ ВИД

... и все остальные (например, ALTER) НЕ возвращают результат. Но я что-то упустил? Какие команды запроса никогда не возвращают результат, и какие команды запроса могут или не могут вернуть результат?

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 26 марта 2012

Из руководства по PHP для mysqli :: query

Возвращаемые значения

Возвращает FALSE при ошибке.Для успешных запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект mysqli_result.Для других успешных запросов mysqli_query () вернет TRUE.

Я предлагаю просто проверить, равно ли возвращаемое значение false (=== false) и сделать что-то с mysqli_errno или mysqli_error , если это так.Фактический анализ строки запроса является излишним.

Если вы должны знать, является ли это набор результатов или просто логическим значением, проверьте тип возвращаемого значения с помощью is_bool($result) или $result instanceof mysqli_result.

0 голосов
/ 26 марта 2012

Существует два основных типа:

  1. Единицы, которые возвращают набор результатов - он может варьироваться от пустого набора до огромного количества данных
  2. Единицы, которые возвращают количество затронутыхстроки.

Существует также три типа запросов:

  1. DML - запросы для управления данными - выбор, вставка, обновление, удаление.
  2. DDL- запросы для определения схемы данных - создание таблицы / представления и т. д.
  3. Контрольные запросы - предоставление или отзыв разрешений

Я полагаю, что контрольные запросы обычно ничего не возвращают, а запросы DDL, такие как create / alter/ установить и ничего не возвращать.SELECT возвращает наборы результатов (которые могут быть пустыми).INSERT / UPDATE / DELETE возвращает количество затронутых строк.

Я бы порекомендовал прочитать запросы SQL для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...