MySQL データベースからランダムなレコード (一意の「トークン」として使用される文字列) を選択する PHP ページを作成したいと考えています。このランダムなレコードを一度だけ選択し、その後二度と選択したくありません。
そのために0
、特定のレコードが選択された瞬間にインクリメントされる特別なフィールド (number を含む「numberfield」という名前) をテーブルに追加します。このように0
して、numberfield テーブル フィールドの値が のレコードのみを選択できます。ランダム レコードが選択されるとすぐに、numberfield フィールドがインクリメントされ、それ1
以上選択できなくなります。次のPHPコードを使用することを考えています:
$result = mysql_query("SELECT token FROM table WHERE numberfield < **1** ORDER BY RAND() LIMIT 0,1");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0];
mysql_query("UPDATE table SET numberfield=numberfield+1 WHERE token=" + $row[0] + "");
これは正しい方法でしょうか?何かご意見は ?
さらに、ページの更新時に別のランダム レコードが選択されるのを避けたいと考えています。「トークン」をキャッシュに保持するための正しくて最も簡単な方法は何ですか? たとえば、ページの更新中に上書きされないセッションに「トークン」を保持することは可能ですか、それとも Ajax などの他の手法を使用する必要がありますか?あなたの助けとコメントは大歓迎です!