top

Описание функции mysql-affected-rows



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() .
corner
My pencil ;)
Главная     Сервисы     Портфолио     Проги     Видео     Контакты     Ссылки     Текст