0

テーブルからランダムな行を選択する SQLの機能については知っていRAND()ますが、ブラウザを更新するたびに異なるランダムな行を選択したくないという問題があります。キーに基づいて選択された同じランダム行のセットが必要です。

たとえば、これが私のテーブルだとします。

----------------------
| id | word | literal|
----------------------
|  1 | say  |   YAS  |
----------------------
|  2 | eat  |   TAE  |
----------------------
|  3 | hit  |   TIH  |
----------------------
|  4 | bad  |   DAB  |
----------------------
|  5 |delve | EVLED  |
----------------------

キーが 6 の場合、毎回行 4 と 5 が選択されます。しかし、キーが 3 の場合、行 2 と 5 が選択される可能性があります。そのため、キーに基づいて毎回ランダムな行のセットが選択されます。

これは可能ですか?

4

3 に答える 3

4

MySQL 関数の : Rand(N) 形式を使用して、生成された乱数の同じシーケンスが必要になるたびに同じ N を渡すように注意してください。N は、特定のセッションの間同じままにすることも、長期間使用するために Cookie に保存することもできます。シーケンスが同じままである必要がある期間によって異なります。

于 2012-07-16T01:25:24.613 に答える
1

md5 ハッシュは良い考えですが、もっと簡単な方法があります。必要に応じて乱数を生成し、$_SESSIONスーパーグローバルを使用してその数を保存します。

例:

session_start();
if(!isset($_SESSION["randomNumber"])){
    $_SESSION["randomNumber"] = generateRandomQuery();
}

その後、クエリを作成するときにその番号を使用できます。PDO を使用すると、次のようになります。

$number = $_SESSION["randomNumber"];
$query = $database->prepare("SELECT id FROM *databaseName* where id = :id");
$query->execute(array(":id" => $number));
于 2012-07-16T01:22:40.887 に答える
0

アイデア..

行 ID を SESSION/cookie に保存し、

$var = value from $_SESSION/cookie
if (isset($var)){

   $sql = select RAND...

} else {

   $sql = select ..... where row = $var

}
于 2012-07-16T01:25:07.087 に答える