Безопасно ли использовать mysql_affected_rows

Можно ли использовать mysql_affected_rows для получения количества строк, затронутых при выполнении обновления пользователем? Что делать, если несколько пользователей обновляют свои пароли, и мне нужно знать, было ли успешное обновление каждого пользователя или нет. Поэтому, если 3 пользователя сделали обновления одновременно, mysql_affected_rows может вернуть 2, даже если одно обновление пользователей не было успешным. Так оно и есть? Я не могу тестировать несколько пользователей одновременно. Насколько это безопасно.

Solutions Collecting From Web of "Безопасно ли использовать mysql_affected_rows"

Это безопасно. Он возвращает только данные о последнем запросе в вашем собственном соединении.

Документация PHP (благодаря Fluffeh ):

Получите количество затронутых строк последним запросом INSERT, UPDATE, REPLACE или DELETE, связанным с link_identifier .

Поскольку это тонкая оболочка над MySQL C API, мы также можем проверить, что :

my_ulonglong mysql_affected_rows (MYSQL * mysql)

Это явно не указано нигде, насколько я могу видеть, но он принимает идентификатор соединения, и кажется, что общий шаблон заключается в том, что все функции возвращают данные о конкретном соединении:

Использование столбцов LAST_INSERT_ID () и AUTO_INCREMENT одновременно от нескольких клиентов вполне допустимо. Каждый клиент получит последний вставленный идентификатор для последнего оператора, который был выполнен клиентом.

В любом случае, это было бы довольно непригодно, если бы вы не были уверены, получен ли ваш результат или нет.

Это безопасно и возвращает значение для вашего текущего соединения с БД ( функция mysql-affected-rows ).

Это безопасно, потому что это зависит от подключения.

Если вы передаете ссылку на свое соединение в качестве параметра, оно относится к этому соединению и поэтому безопасно использовать, даже если одновременные пользователи получают доступ к вашему скрипту – потому что каждый из них будет использовать отдельное соединение! См. Документацию для mysql_affected_rows .

Обратите внимание, однако, что расширение mysql в целом устарело. Подумайте о переходе на MySQLi или PDO_MySQL!

Я использую mysql_query("SELECT ROW_COUNT();"); , Я всегда находил, что это сработало лучше.