Учебник РНР
Назад Вперёд

mysql_affected_rows

(PHP 3, PHP 4)

mysql_affected_rows - получает количество рядов, задействованных в предыдущей MySQL-операции.

Описание

int mysql_affected_rows ([resource link_identifier])

mysql_affected_rows() возвращает количество рядов, задействованных в последнем запросе INSERT, UPDATE или DELETE, ассоциированном с идентификатором link_identifier . Если link identifier не специфицирован, принимается последняя ссылка, открытая функцией mysql_connect() .

Примечание: если вы используете транзакции, необходимо вызывать mysql_affected_rows() после запроса INSERT, UPDATE или DELETE, а не после подтверждения транзакции.

Если последним запросом был DELETE без оператора WHERE, все записи таблицы будут удалены, но функция возвратит нуль.

Примечание: при использовании UPDATE, MySQL не обновит столбцы, где новое значение - такое же, как и старое. Это создаёт возможность того, что mysql_affected_rows() совпадёт не с количеством рядов, задействованных реально, а только с рядами, непосредственно изменёнными запросом.

mysql_affected_rows() не работает с операторами SELECT; только с операторами, модифицирующими запись. Для запрашивания количества рядов, возвращённых SELECT, используйте mysql_num_rows() .

Если последний запрос потерпел неудачу, эта функция возвратит -1.

Пример 1. Delete-Query
<?php /* соединение с БД */ mysql_pconnect("localhost", "mysql_user", "mysql_password") or die ("Could not connect"); /* это должно возвратить корректное количество удалённых записей */ mysql_query("DELETE FROM mytable WHERE id < 10"); printf ("Records deleted: %d\n", mysql_affected_rows()); /* без оператора where в операторе delete должно возвратить 0 */ mysql_query("DELETE FROM mytable"); printf ("Records deleted: %d\n", mysql_affected_rows()); ?>

На выходе будет:

Records deleted: 10 Records deleted: 0
Пример 2. Update-Query
<?php /* соединение с БД */ mysql_pconnect("localhost", "mysql_user", "mysql_password") or die ("Could not connect"); /* обновить/Update записи */ mysql_query("UPDATE mytable SET used=1 WHERE id < 10"); printf ("Updated records: %d\n", mysql_affected_rows()); mysql_query("COMMIT"); ?>

На выходе:

Updated Records: 10

См. также mysql_num_rows() , mysql_info() .


Назад Оглавление Вперёд
Функции MySQL Вверх mysql_change_user