mysqli::$info

mysqli_info

(PHP 5, PHP 7)

mysqli::$info -- mysqli_info Извлекает информацию о последнем выполненном запросе

Описание

Объектно-ориентированный стиль

Процедурный стиль

string mysqli_info ( mysqli $link )

Функция mysqli_info() возвращает строку с информацией о последнем выполненном запросе к базе данных. Описание строки приведено ниже:

Возможные возвращаемые значения mysqli_info
Тип запроса Пример результирующей строки
INSERT INTO...SELECT... Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO...VALUES (...),(...),(...) Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ... Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ... Records: 3 Duplicates: 0 Warnings: 0
UPDATE ... Rows matched: 40 Changed: 40 Warnings: 0

Замечание:

Запросы, не попадающие в приведенный список, не поддерживаются. В таких ситуациях mysqli_info() вернет пустую строку.

Список параметров

link

Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()

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

Строка символов представляющая дополнительную информацию о последнем запущенном запросе.

Примеры

Пример #1 Пример использования $mysqli->info

Объектно-ориентированный стиль

<?php
$mysqli 
= new mysqli("localhost""my_user""my_password""world");

/* проверка соединения */
if (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TEMPORARY TABLE t1 LIKE City");

/* INSERT INTO .. SELECT */
$mysqli->query("INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
printf("%s\n"$mysqli->info);

/* закрываем соединение */
$mysqli->close();
?>

Процедурный стиль

<?php
$link 
mysqli_connect("localhost""my_user""my_password""world");

/* проверка соединения */
if (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}

mysqli_query($link"CREATE TEMPORARY TABLE t1 LIKE City");

/* INSERT INTO .. SELECT */
mysqli_query($link"INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
printf("%s\n"mysqli_info($link));

/* закрываем соединение */
mysqli_close($link);
?>

Результат выполнения данных примеров:

Records: 150  Duplicates: 0  Warnings: 0

Смотрите также

  • mysqli_affected_rows() - Получает число строк, затронутых предыдущей операцией MySQL
  • mysqli_warning_count() - Возвращает количество предупреждений из последнего запроса заданного подключения
  • mysqli_num_rows() - Получает число рядов в результирующей выборке

Коментарии

Might save someone some time...

<?php
$prototype
='Rows matched: 0 Changed: 1 Warnings: 2';
list(
$matched$changed$warnings) = sscanf($prototype"Rows matched: %d Changed: %d Warnings: %d");
?>
2010-12-14 20:43:47
http://php5.kiev.ua/manual/ru/mysqli.info.html
If inserted just one row, mysqli_info() returns empty string which might be confusing, but mysqli_affected_rows() returns 1 in this case.
2017-05-18 18:00:15
http://php5.kiev.ua/manual/ru/mysqli.info.html
Автор:
I don't recall where I got this, but it is SUPER important information and I cannot believe it is missing from the documentation!

If you do a mysqli_info()/$mysqli->info() after a "INSERT INTO ... VALUES ()" that adds/updates JUST ONE ROW, then, mysqli::info() returns an empty result (!!!).

If it is empty (null on php 8+; in php 7 I don't know in which way it is empty) check $mysqli->affectedRows() or mysqli_affected_rows(). If that returns 2, the INSERT did a successful UPDATE of ONE record (so there must have been a ON DUPLICATE KEY UPDATE). If it returns 1: there was an INSERT of ONE record.

This is not a bug, this is BY DESIGN, although it does remind me strongly of "This is not a bug, this is a feature" Microsoft of the 90's. I have no clue why you would design it this way except for some weird and extremely old backward compatibility issues.
2024-06-10 17:12:44
http://php5.kiev.ua/manual/ru/mysqli.info.html

    Поддержать сайт на родительском проекте КГБ