Take note:
Calling this function will change the output of mysqli_affected_rows if any warnings are returned. So if you're using mysqli_affected_rows in your application, make sure to call it before calling mysqli_get_warnings.(PHP 5 >= 5.1.0, PHP 7, PHP 8)
mysqli::get_warnings -- mysqli_get_warnings — Получает результат SHOW WARNINGS
Объектно-ориентированный стиль
Процедурный стиль
Возвращает односвязный список, состоящий из объектов mysqli_warning
или false, если предупреждений нет.
Каждый объект в списке соответствует одной строке из результата SHOW WARNINGS.
Вызов метода mysqli_warning::next() заполнит объект
значениями из следующей строки.
Замечание: Для получения предупреждающих сообщений рекомендуется использовать SQL-команду
SHOW WARNINGS [limit row_count]вместо функции.
Связанный список нельзя перемотать назад или восстановить снова.
mysqlТолько для процедурного стиля: объект mysqli, который вернула функция mysqli_connect() или функция mysqli_init().
Метод возвращает односвязный список, состоящий из объектов mysqli_warning
или false если предупреждений нет.
Пример #1 Проход по связанному списку для извлечения всех предупреждений
Объектно-ориентированный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$mysqli->query("SELECT 1/0, CAST('NULL' AS UNSIGNED)");
if ($mysqli->warning_count > 0) {
$warning = $mysqli->get_warnings();
if ($warning !== false) {
do {
printf("Номер ошибки: %s\n", $warning->errno);
printf("Сообщение: %s\n", $warning->message);
} while ($warning->next());
}
}Процедурный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "user", "password", "test");
mysqli_query($link, "SELECT 1/0, CAST('NULL' AS UNSIGNED)");
if (mysqli_warning_count($link) > 0) {
$warning = mysqli_get_warnings($link);
if ($warning !== false) {
do {
printf("Номер ошибки: %s\n", $warning->errno);
printf("Сообщение: %s\n", $warning->message);
} while ($warning->next());
}
}Результат выполнения приведённых примеров:
Номер ошибки: 1365 Сообщение: Division by 0 Номер ошибки: 1292 Сообщение: Truncated incorrect INTEGER value: 'NULL'