(PHP 5)
mysqli->affected_rows — Получить количество рядов, затронутых предыдущей операцией
Процедурный стиль:
Объектно-ориентированный стиль (свойство):
Функция mysqli_affected_rows() возвращает количество рядов, затронутых последним INSERT, UPDATE, REPLACE или DELETE запросом, ассоциированным с передаваемым параметром link . Если последний запрос вызвал ошибку, функция вернет -1.
Note: Для выражений SELECT функция mysqli_affected_rows() работает подобно mysqli_num_rows().
Функция mysqli_affected_rows() работает только с запросами, которые модифицируют данные в таблице. Чтобы получить количество рядов из запроса SELECT, используйте вместо нее функцию mysqli_num_rows().
Целое число больше нуля отражает количество затронутых или найденных рядов. Ноль сообщает, что ни одна запись не была обновлена выражением UPDATE, ни один ряд не совпадает с выражением WHERE в запросе или о том, что ни один запрос не был выполнен. -1 сообщает, что запрос вернул ошибку.
Note: Если количество затронутых рядов больше максимального целого числа, количество затронутых рядов будет возвращено в виде строки.
Example#1 Объектно-ориентированный стиль
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Проверка подключения */
if (mysqli_connect_errno()) {
printf("Ошибка подключения: %s\n", mysqli_connect_error());
exit();
}
/* Вставки строк */
$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);
$result->close();
/* Удаление таблицы Language */
$mysqli->query("DROP TABLE Language");
/* Закрытие соединения */
$mysqli->close();
?>
Example#2 Процедурный стиль
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
if (!$link) {
printf("Невозможно подключиться к localhost. Ошибка: %s\n", mysqli_connect_error());
exit();
}
/* Вставка строк */
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));
mysqli_free_result($result);
/* Удаление таблицы Language */
mysqli_query($link, "DROP TABLE Language");
/* Закрытие соединения */
mysqli_close($link);
?>
Результат выполнения данного примера:
Затронутые ряды (INSERT): 984
Затронутые ряды (UPDATE): 168
Затронутые ряды (DELETE): 815
Затронутые ряды (SELECT): 169