mysql_affected_rowsを使用して、ユーザーによる更新中に影響を受ける行数を取得しても大丈夫ですか?パスワードを更新するユーザーが複数いて、各ユーザーの更新が成功したかどうかを知る必要がある場合はどうなりますか。したがって、3人のユーザーが同時に更新を行った場合、1人のユーザーの更新が成功しなかったとしても、mysql_affected_rowsは2を返す可能性があります。どうですか?複数のユーザーで同時にテストすることはできません。これはどれほど安全ですか。
5 に答える
安全で、現在のDB接続の値を返します(mysql-affected-rows関数)。
安全です。自分の接続の最後のクエリに関するデータのみを返します。
link_identifierに関連付けられた最後のINSERT、UPDATE、REPLACE、またはDELETEクエリによって影響を受ける行の数を取得します。
これはMySQLCAPIの薄いラッパーであるため、次のことも確認できます。
my_ulonglong mysql_affected_rows(MYSQL * mysql)
私が見る限り、どこにも明示的には言われていませんが、接続識別子を取り、すべての関数が特定の接続に関するデータを返すという一般的なパターンのようです。
複数のクライアントからLAST_INSERT_ID()列とAUTO_INCREMENT列を同時に使用することは完全に有効です。各クライアントは、クライアントが最後に実行したステートメントに対して最後に挿入されたIDを受け取ります。
とにかく、あなたが得た結果があなたのものであるかどうか確信が持てないなら、それはかなり使い物になりません。
接続固有なので安全です。
接続への参照をパラメーターとして渡すと、その接続に固有であるため、スクリプトに同時にアクセスするユーザーがいる場合でも、安全に使用できます。ユーザーはそれぞれ個別の接続を使用するためです。mysql_affected_rowsのドキュメントを参照してください。
ただし、mysql拡張機能は全体として非推奨であることに注意してください。代わりにMySQLiまたはPDO_MySQLに切り替えることを検討してください!
私は使用しますmysql_query("SELECT ROW_COUNT();");
。私はいつもそれがうまくいくことに気づきました。