(PHP 5, PHP 7, PHP 8)
mysqli::$affected_rows -- mysqli_affected_rows — Получает число строк, затронутых предыдущей операцией MySQL
Объектно-ориентированный стиль
Процедурный стиль
Возвращает число строк, затронутых последним запросом INSERT
,
UPDATE
, REPLACE
или
DELETE
.
Работает аналогично mysqli_num_rows() для выражений SELECT
.
mysql
Только для процедурного стиля: объект mysqli, полученный с помощью mysqli_connect() или mysqli_init().
Целое число, большее нуля, означает количество затронутых или полученных
строк.
Ноль означает, что записи для оператора UPDATE
не обновлялись,
ни одна строка не соответствовала выражению WHERE
в запросе
или что ни один запрос ещё не был выполнен.
-1
означает, что во время выполнения запроса произошла ошибка
или что mysqli_affected_rows() была вызвана для
небуферизованного запроса SELECT
.
Замечание:
Если число затронутых строк больше чем максимальное значение целого числа (
PHP_INT_MAX
), то число затронутых строк будет возвращено в виде строки.
Пример #1 Пример использования $mysqli->affected_rows
Объектно-ориентированный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Добавление строк */
$mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage");
printf("Затронутые строки (INSERT): %d\n", $mysqli->affected_rows);
$mysqli->query("ALTER TABLE Language ADD Status int default 0");
/* Обновление строк */
$mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50");
printf("Затронутые строки (UPDATE): %d\n", $mysqli->affected_rows);
/* Удаление строк */
$mysqli->query("DELETE FROM Language WHERE Percentage < 50");
printf("Затронутые строки (DELETE): %d\n", $mysqli->affected_rows);
/* Выборка всех строк */
$result = $mysqli->query("SELECT CountryCode FROM Language");
printf("Затронутые строки (SELECT): %d\n", $mysqli->affected_rows);
/* Удаление таблицы Language */
$mysqli->query("DROP TABLE Language");
?>
Процедурный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Добавление строк */
mysqli_query($link, "CREATE TABLE Language SELECT * from CountryLanguage");
printf("Затронутые строки (INSERT): %d\n", mysqli_affected_rows($link));
mysqli_query($link, "ALTER TABLE Language ADD Status int default 0");
/* Обновление строк */
mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50");
printf("Затронутые строки (UPDATE): %d\n", mysqli_affected_rows($link));
/* Удаление строк */
mysqli_query($link, "DELETE FROM Language WHERE Percentage < 50");
printf("Затронутые строки (DELETE): %d\n", mysqli_affected_rows($link));
/* Выборка всех строк */
$result = mysqli_query($link, "SELECT CountryCode FROM Language");
printf("Затронутые строки (SELECT): %d\n", mysqli_affected_rows($link));
/* Удаление таблицы Language */
mysqli_query($link, "DROP TABLE Language");
?>
Результат выполнения данных примеров:
Затронутые строки (INSERT): 984 Затронутые строки (UPDATE): 168 Затронутые строки (DELETE): 815 Затронутые строки (SELECT): 169