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");
?>mysqli::$info
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
mysqli::$info
Референца за `mysqli.info.php` со подобрена типографија и навигација.
mysqli::$info
mysqli_info
класата mysqli_driver
mysqli::$info -- mysqli_info — Презема информации за најскоро извршеното прашање
= NULL
Напиши целосна ознака на елемент
Процедурален стил
На mysqli_info() Презема информации за најнеодамна извршеното барање
| Можни вредности за враќање на mysqli_info | Тип на барање |
|---|---|
| Примерок на резултат | INSERT INTO...SELECT... |
| Записи: 100 Дупликати: 0 Предупредувања: 0 | INSERT INTO...VALUES (...),(...),(...) |
| Записи: 3 Дупликати: 0 Предупредувања: 0 | LOAD DATA INFILE ... |
| Записи: 1 Избришани: 0 Прескокнати: 0 Предупредувања: 0 | INSERT INTO...VALUES (...),(...),(...) |
| ALTER TABLE ... | UPDATE ... |
Забелешка:
Редови совпаднати: 40 Променети: 40 Предупредувања: 0 mysqli_info() Барањата кои не спаѓаат во некој од претходните формати не се поддржани. Во овие ситуации,
Параметри
-
mysql објектот како свој прв аргумент. mysqli Само процедурален стил: А mysqli_connect() or mysqli_init()
Вратени вредности
ќе врати празен стринг.
Примери
Пример #1 $mysqli->info example
Напиши целосна ознака на елемент
<?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);Процедурален стил
<?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));Горните примери ќе дадат излез:
Records: 150 Duplicates: 0 Warnings: 0
Види Исто така
- mysqli_affected_rows() - Ја добива бројот на погодени редови во претходна MySQL операција
- mysqli_warning_count() Стринг со дополнителни информации за најнеодамна извршеното барање.
- mysqli_num_rows() - Го добива бројот на редови во множеството со резултати
Белешки од корисници 3 белешки
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.If inserted just one row, mysqli_info() returns empty string which might be confusing, but mysqli_affected_rows() returns 1 in this case.