PHP: mysqli_affected_rows - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mysqli_autocommit mysqli

Last updated: Sat, 27 Jan 2007

view this page in

# mysqli_affected_rows

(PHP 5)

mysqli_affected_rows

(no version information, might be only in CVS)

mysqli->affected_rows -- Получить количество рядов, затронутых предыдущей операцией

## Описание

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

int mysqli_affected_rows ( mysqli link )

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

class mysqli {
int affected_rows
}

Функция mysqli_affected_rows() возвращает количество рядов, затронутых последним INSERT, UPDATE, REPLACE или DELETE запросом, ассоциированным с передаваемым параметром `link`. Если последний запрос вызвал ошибку, функция вернет -1.

> Замечание: Для выражений SELECT функция mysqli_affected_rows() работает подобно mysqli_num_rows().

Функция mysqli_affected_rows() работает только с запросами, которые модифицируют данные в таблице. Чтобы получить количество рядов из запроса SELECT, используйте вместо нее функцию mysqli_num_rows().

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

Целое число больше нуля отражает количество затронутых или найденных рядов. Ноль сообщает, что ни одна запись не была обновлена выражением UPDATE, ни один ряд не совпадает с выражением WHERE в запросе или о том, что ни один запрос не был выполнен. -1 сообщает, что запрос вернул ошибку.

> Замечание: Если количество затронутых рядов больше максимального целого числа, количество затронутых рядов будет возвращено в виде строки.

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

mysqli_num_rows() и mysqli_info().

## Примеры

Пример 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();
?>`

Пример 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

add a note User Contributed Notes
mysqli_affected_rows
Typer85 at gmail dot com
31-Dec-2006 08:35
`Just to clarify about the possible return values in this Manual those not familiar with PHP and MySQL.
"-1 indicates that the query returned an error."
-1 will be returned if the query itself can not be issued to the server, possibly because of syntax error AND if the last query was not either an Insert or Update statement.`
sean at lookin3d dot com
12-Apr-2006 01:48
`mysqli_affected_rows will return 0 if you run a UPDATE command with the same variables that already exist
Here is a example
db row from 'test' table
----------
id = 1
name = test
mysqli_query($db,"UPDATE `test` SET `name`='test' WHERE `id`='1'");
$i=mysqli_affected_rows($db);
$i Will Be Zero Or False`
add a note
mysqli_autocommit mysqli

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 11:33:19 2007 PST