0

申し訳ありませんが、おそらくどこかに私の質問への答えがあるでしょうが、この問題を解決しようと探しているのは何時間もかかります:コードは次のとおりです:

    <?php
    $con = mysql_connect("****","****","***");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

        mysql_select_db("******", $con);

    $query = "SELECT id FROM fq_questions";
    $rowcnt = mysql_num_rows(mysql_query($query));      
    echo "Tot scenes: ".$rowcnt;
    $id = rand (1,$rowcnt);
    echo "<br>Id rand: ".$id."<br>";    
flush();
    $newquery = "SELECT question FROM fq_questions WHERE id=".$id;
    $result = mysql_query($newquery);
    if (!$result) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $newquery;
        die($message);
    }

    $row = mysql_fetch_assoc($result);
    echo $row['question'];

    mysql_close($con);
    ?>

問題は、出力がないことです。私はすべてを試しましたが、クエリに問題があるようですが、結果はありますが、falseではありませんが、存在しても何も出力されません。コードはまで機能します

    echo "<br>Id rand: ".$id."<br>";    

その後、何も表示されません。それはダミーの問題です。私はそのせいで夢中になっています。

うーん、忘れていました... 私が問題を抱えているウェブサイト: http://www.freelabs.it/filmquiz/game.php

4

3 に答える 3

3

descは SQL キーワードです。そのため、クエリがコンパイルされない場合があります。

于 2012-12-17T19:58:13.690 に答える
1

「desc」は MySQL の予約語です。DB でその列名を変更する必要があります。とにかく、あなたの方法はまったくランダムではなく、ID に「穴」があるとすぐに失敗します (メンバーを 1 つ削除するとき)。

MySQLの「ORDER BY RAND()」を見てください。

$data = mysql_query("SELECT description FROM fq_questions ORDER BY RAND() LIMIT 1");
于 2012-12-17T20:01:33.543 に答える
0

mysql_fetch_row()数値配列を返すこれを使用しました。次に、「desc」という名前の配列スロットにアクセスしようとします。
存在しません。(私の推測では、エラーが抑制されて出力が表示されなくなり、警告が抑制されて、その行以降の出力が表示されなくなります。) (まだ非推奨!) に
変更mysql_fetch_row()してみてください。解決する必要があります。mysql_fetch_assoc()

ソース: http://php.net/manual/en/function.mysql-fetch-row.php
および: http://php.net/manual/en/function.mysql-fetch-assoc.php

于 2012-12-17T20:03:26.593 に答える