8.4.3.209 mysql_store_result()
MYSQL_RES *mysql_store_result(MYSQL *mysql)
8.4.3.210 Описание
Функцию mysql_store_result()
или mysql_use_result()
необходимо вызывать
после каждого выполненного запроса, извлекающего данные (SELECT
, SHOW
,
DESCRIBE
, EXPLAIN
).
Нет необходимости в вызове функции mysql_store_result()
или
mysql_use_result()
для других запросов, но не будет никакого вреда или
заметной потери производительности, если функция mysql_store_result()
будет вызываться во всех случаях. Можно определить, вернул ли данный
запрос результирующий набор, проверкой, возвращает ли 0 функция
mysql_store_result()
(более подробно об этом см. дальше).
Для проверки того, вернул данный запрос результирующий набор или нет,
можно использовать функцию mysql_field_count()
.
See section 8.4.3.85 mysql_field_count()
.
Функция mysql_store_result()
читает весь результат запроса данного
клиента, выделяет структуру MYSQL_RES
и помещает результат в эту
структуру.
Функция mysql_store_result()
возвращает нулевой указатель, если данный
запрос не вернул результирующий набор (если этот запрос был, например,
командой INSERT
).
Функция mysql_store_result()
также возвращает нулевой указатель, если
чтение результирующего набора завершилось неудачно. Выяснить, произошла ли
ошибка, можно следующим образом: если mysql_error()
не возвращает нулевой
указатель, если mysql_errno()
возвращает величину <> 0 или если
mysql_field_count()
возвращает величину <> 0.
Пустой результирующий набор возвращается в случае, если нет ни одной
возвращенной строки. (Пустой результирующий набор и нулевой указатель -
разные вещи в контексте возвращаемых величин.)
Если была вызвана функция mysql_store_result()
и полученный результат не
является нулевым указателем, то можно вызвать функцию mysql_num_rows()
для
определения количества строк в результирующем наборе.
Можно вызвать функцию mysql_fetch_row()
для выборки строк из
результирующего набора или функции mysql_row_seek()
и mysql_row_tell()
для
получения или установки положения текущей строки внутри данного
результирующего набора.
Необходимо вызвать функцию mysql_free_result()
сразу же после окончания
действий с результирующим набором.
See section 8.4.6.1 Почему после успешных возвратов функции mysql_query()
функция mysql_store_result()
иногда возвращает NULL
?.
8.4.3.211 Возвращаемые значения
Результирующая структура MYSQL_RES
с результатами. NULL
, если произошла
ошибка.
8.4.3.212 Ошибки
CR_COMMANDS_OUT_OF_SYNC
-
Команды были выполнены в ненадлежащем порядке.
CR_OUT_OF_MEMORY
-
Нехватка памяти.
CR_SERVER_GONE_ERROR
-
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
-
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
-
Произошла неизвестная ошибка.