Mysqli_stmt :: result_metadata возвращает false при вставке, обновлении, удалении запросов? - PullRequest
0 голосов
/ 28 июня 2010

Я немного не понимаю - при обновлении, вставке, удалении запросов result_metadata возвращает false? Потому что:

$meta = $stmt->result_metadata();
if($meta === false){
    throw new Exception(...));
}

выдает исключение при попытке выполнить запрос на обновление, вставку или удаление. Но оно должно быть ложным только при ошибке. (из руководства php)

1 Ответ

1 голос
/ 28 июня 2010

Функция предназначена для возврата данных о данных, о которых вы только что сделали запрос (метаданные!). Действие вставки строк, обновления строк и удаления строк обычно фактически не возвращает набор результатов.

(По крайней мере, в MySQL. В некоторых других базах данных, таких как Postgres, есть предложение RETURNING ...)

Из комментариев на mysqli_stmt_result_metadata странице справочника :

Если result_metadata () возвращает false, но error / errno / sqlstate сообщает, что ошибки не произошло, это означает, что ваш запрос не содержит набора результатов, т.е. запрос INSERT / UPDATE / DELETE вместо запроса SELECT.

Это указано в документации, где говорится: «Если оператор, переданный mysqli_prepare (), является оператором, создающим набор результатов, mysqli_stmt_result_metadata () возвращает объект результата», но может быть не всем понятно, что это влечет за собой точно .

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