 |
(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"); ?> | На выходе: |
См. также
mysql_num_rows(), mysql_info(). |  |