mysqli_error
Возвращает сообщение об ошибке последнего вызова функции MySQLi, который может успешно выполниться или провалиться.
Список параметров
Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()
Возвращаемые значения
Строка с описанием ошибки. Пустая строка, если ошибки нет.
Примеры
Пример #1 Пример с $mysqli->error
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );
?php
/* check connection */
if ( $mysqli -> connect_errno ) printf ( «Connect failed: %s\n» , $mysqli -> connect_error );
exit();
>
if (! $mysqli -> query ( «SET a=1» )) printf ( «Errormessage: %s\n» , $mysqli -> error );
>
/* close connection */
$mysqli -> close ();
?>
$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );
?php
/* check connection */
if ( mysqli_connect_errno ()) printf ( «Connect failed: %s\n» , mysqli_connect_error ());
exit();
>
if (! mysqli_query ( $link , «SET a=1» )) printf ( «Errormessage: %s\n» , mysqli_error ( $link ));
>
/* close connection */
mysqli_close ( $link );
?>
Результат выполнения данных примеров:
Errormessage: Unknown system variable 'a'
Смотрите также
- mysqli_connect_errno() — Возвращает код ошибки последней попытки соединения
- mysqli_connect_error() — Возвращает описание последней ошибки подключения
- mysqli_errno() — Возвращает код ошибки последнего вызова функции
- mysqli_sqlstate() — Возвращает код состояния SQLSTATE последней MySQL операции
mysqli_query
Для не-DML запросов (не INSERT, UPDATE или DELETE), эта функция равносильна вызову функции mysqli_real_query() , а затем mysqli_use_result() или mysqli_store_result() .
- mysqlnd на платформе Linux возвращает код ошибки 1153. Сообщение об ошибке означает » размер пакета превышает max_allowed_packet байт «.
- mysqlnd на платформе Windows возвращает код ошибки 2006. Это сообщение об ошибке означает » отказ сервера «.
- libmysqlclient на всех платформах возвращает код ошибки 2006. Это сообщение об ошибке означает » отказ сервера «.
Список параметров
Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()
Данные в тексте запроса должны быть правильно экранированы.
Либо константа MYSQLI_USE_RESULT , либо MYSQLI_STORE_RESULT в зависимости от требуемого поведения функции. По умолчанию используется MYSQLI_STORE_RESULT .
При использовании MYSQLI_USE_RESULT все последующие вызовы этой функции будут возвращать ошибку Commands out of sync до тех пор, пока не будет вызвана функция mysqli_free_result()
С константой MYSQLI_ASYNC (доступна при использовании mysqlnd) возможно выполнять запросы асинхронно. В этом случае для получения результатов каждого запроса необходимо использовать функцию mysqli_poll() .
Возвращаемые значения
Возвращает FALSE в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернет объект mysqli_result. Для остальных успешных запросов mysqli_query() вернет TRUE .
Список изменений
Версия | Описание |
---|---|
5.3.0 | Добавлена возможность выполнять асинхронные запросы. |
Примеры
Пример #1 Пример использования mysqli::query()
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );
?php
/* проверка соединения */
if ( $mysqli -> connect_errno ) printf ( «Не удалось подключиться: %s\n» , $mysqli -> connect_error );
exit();
>
/* Создание таблицы не возвращает результирующего набора */
if ( $mysqli -> query ( «CREATE TEMPORARY TABLE myCity LIKE City» ) === TRUE ) printf ( «Таблица myCity успешно создана.\n» );
>
/* Select запросы возвращают результирующий набор */
if ( $result = $mysqli -> query ( «SELECT Name FROM City LIMIT 10» )) printf ( «Select вернул %d строк.\n» , $result -> num_rows );
/* очищаем результирующий набор */
$result -> close ();
>
/* Если нужно извлечь большой объем данных, используем MYSQLI_USE_RESULT */
if ( $result = $mysqli -> query ( «SELECT * FROM City» , MYSQLI_USE_RESULT ))
/* Важно заметить, что мы не можем вызывать функции, которые взаимодействуют
с сервером, пока не закроем результирующий набор. Все подобные вызовы
будут вызывать ошибку ‘out of sync’ */
if (! $mysqli -> query ( «SET @a:=’this will not work'» )) printf ( «Ошибка: %s\n» , $mysqli -> error );
>
$result -> close ();
>
$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );
?php
/* проверка соединения */
if ( mysqli_connect_errno ()) printf ( «Не удалось подключиться: %s\n» , mysqli_connect_error ());
exit();
>
/* Создание таблицы не возвращает результирующего набора */
if ( mysqli_query ( $link , «CREATE TEMPORARY TABLE myCity LIKE City» ) === TRUE ) printf ( «Таблица myCity успешно создана.\n» );
>
/* Select запросы возвращают результирующий набор */
if ( $result = mysqli_query ( $link , «SELECT Name FROM City LIMIT 10» )) printf ( «Select вернул %d строк.\n» , mysqli_num_rows ( $result ));
/* очищаем результирующий набор */
mysqli_free_result ( $result );
>
/* Если нужно извлечь большой объем данных, используем MYSQLI_USE_RESULT */
if ( $result = mysqli_query ( $link , «SELECT * FROM City» , MYSQLI_USE_RESULT ))
/* Важно заметить, что мы не можем вызывать функции, которые взаимодействуют
с сервером, пока не закроем результирующий набор. Все подобные вызовы
будут вызывать ошибку ‘out of sync’ */
if (! mysqli_query ( $link , «SET @a:=’this will not work'» )) printf ( «Ошибка: %s\n» , mysqli_error ( $link ));
>
mysqli_free_result ( $result );
>
Результат выполнения данных примеров:
Таблица myCity успешно создана. Select вернул 10 строк. Ошибка: Commands out of sync; You can't run this command now
Смотрите также
- mysqli_real_query() — Выполнение SQL запроса
- mysqli_multi_query() — Выполняет запрос к базе данных
- mysqli_free_result() — Освобождает память занятую результатами запроса