CascadiaPHP 2024

mysqli::$info

mysqli_info

(PHP 5, PHP 7, PHP 8)

mysqli::$info -- mysqli_infoRetourne des informations à propos de la dernière requête exécutée

Description

Style orienté objet

Style procédural

mysqli_info(mysqli $mysql): ?string

La fonction mysqli_info() retourne une chaîne fournissant des informations à propos de la dernière requête exécutée. La nature de cette chaîne est fournie ci-dessous :

Valeurs de retour possibles pour mysqli_info()
Type de requête Exemple de retour
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

Note:

Les requêtes qui ne font pas partie de la liste précédente ne sont pas supportées. Dans cette situation, mysqli_info() retournera une chaîne de caractères vide.

Liste de paramètres

mysql

Seulement en style procédural : Un objet mysqli retourné par la fonction mysqli_connect() ou mysqli_init().

Valeurs de retour

Une chaîne de caractères donnant des informations supplémentaires à propos de la dernière requête exécutée.

Exemples

Exemple #1 Exemple avec $mysqli->info

Style orienté objet

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$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);

Style procédural

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

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));

Les exemples ci-dessus vont afficher :

Records: 150  Duplicates: 0  Warnings: 0

Voir aussi

add a note

User Contributed Notes 3 notes

up
26
user at biglake dot com
13 years ago
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");
?>
up
0
Rumour
1 month ago
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.
up
0
vzverev [at] newmail.ru (Vasiliy Zverev)
7 years ago
If inserted just one row, mysqli_info() returns empty string which might be confusing, but mysqli_affected_rows() returns 1 in this case.
To Top