0

我从我的桌子上随机抓取两行。然后我想比较它们以确保它们不是相同的行。如果他们是,我想继续选择一个随机行,直到我开始,那是不一样的。

目前我正在选择随机行,当我点击 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 回答