0

テーブルから 2 つのランダムな行を取得しています。次に、それらを比較して、それらが同じ行ではないことを確認します。もしそうなら、私が乗るまでランダムな行を選択し続けたいのですが、それは同じではありません。

現在、ランダムな行を選択していますが、別の行を取得しようとして while ループを実行すると問題が発生します。次のエラーが表示されます「非オブジェクトでメンバー関数 fetch() を呼び出します」

for ($i = 1; $i <= $cycles; $i++) {
        $t1 = $dbtemp->query("SELECT * FROM `test` ORDER BY RAND() LIMIT 1");
        $t2 = $dbtemp->query("SELECT * FROM `test` ORDER BY RAND() LIMIT 1");
        $winner = $t1->fetch(PDO::FETCH_ASSOC);
        $loser = $t2->fetch(PDO::FETCH_ASSOC);
        if($winner['id'] == $loser['id']) {
            while($winner['id'] == $loser['id']) {
                $t2 = $dbtemp->query("SELECT * FROM `content` ORDER BY RAND() LIMIT 1");
                $loser = $t2->fetch(PDO::FETCH_ASSOC); // Error occurs on this line
            }
        }

この作業をどのように行うべきか、または行うことができるかについての提案は素晴らしいでしょう.

4

1 に答える 1

3

次のようにしてみませんか。

$t1 = $dbtemp->query("SELECT * FROM test ORDER BY RAND() LIMIT 2");

その後:

$players = $t1->fetchAll(PDO::FETCH_ASSOC);
$winner = $players[0];
$loser = $players[1];
于 2013-11-09T11:52:07.540 に答える