PHP/MYSQL-在for循环中只生成一个随机单词

PHP/MYSQL-在for循环中只生成一个随机单词,php,mysql,random,Php,Mysql,Random,在游戏中,我在用户和计算机之间进行一个小的交互。用户总是第一个移动,他输入自己选择的单词。 我做了一个sql查询,当用户玩最多10次游戏时,该查询获取用户所玩的所有游戏。一旦用户做出第一步,我希望计算机生成一个随机单词,如下所示: $sql="Select word from plays where user=1 and id=$id"; $result=mysqli_query($link, $sql); for($i=0;$i<10 && ($row=mysqli_f

在游戏中,我在用户和计算机之间进行一个小的交互。用户总是第一个移动,他输入自己选择的单词。 我做了一个sql查询,当用户玩最多10次游戏时,该查询获取用户所玩的所有游戏。一旦用户做出第一步,我希望计算机生成一个随机单词,如下所示:

$sql="Select word from plays where user=1 and id=$id";
$result=mysqli_query($link, $sql);

for($i=0;$i<10 && ($row=mysqli_fetch_assoc($result)) ;$i++){

    // some code here

    $random="select word from words order by Rand() LIMIT 1";
    $result=mysqli_query($link, $random);
    $wrandom=mysqli_fetch_assoc($result);
    $wordR=$wrandom['word']; 
 } 
在第一次尝试中,所有操作都正常,生成了一个随机单词,但在第二次尝试中,生成了两个随机单词,而不是一个,在第三次尝试中,生成了3个单词,以此类推。。。
我应该怎么做才能每次尝试只生成一个随机单词?

您应该尝试更改循环中变量$result的名称,因为它会与第一个$result变量产生冲突。

您可以将两个查询合并到一个查询中

$sql = "SELECT p.word as user_word, w.word as computer_word
        FROM plays AS p
        CROSS JOIN words AS w
        WHERE p.user = 1 AND p.id = $id
        ORDER BY RAND()
        LIMIT 10";
$result = mysqli_query($link, $sql);
while ($row = mysqli_fetch_assoc($result)) {
    $wordU = $row['user_word'];
    $wordR = $row['computer_word'];
    // some code here
}

这似乎是另一个问题的解决方案。我看不出这个错误是如何导致他在每次迭代中得到多个单词的。你真的在两个查询中使用了相同的$result变量,还是在复制代码时更改了它?我看不到任何东西每次都会生成更多的单词。我怀疑问题出在这里的//一些代码中。