mysql_fetch问题......我疯了

时间:2012-12-17 19:55:45

标签: php mysql

对不起,可能会在某个地方找到我的问题的答案,但是很长时间以来我一直在寻找解决这个问题的方法: 这是代码:

    <?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);
    ?>

问题是没有输出。我已尝试过所有内容,似乎是查询中的一个问题,但是结果,它不是假的,但即使它存在,也不输出任何内容。 代码一直工作到

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

然后它什么也没显示。 这是一个虚假的问题,我因此而变得疯狂。

呃,忘记了...我遇到问题的网站:http://www.freelabs.it/filmquiz/game.php

3 个答案:

答案 0 :(得分:3)

注意,desc是一个SQL关键字!您的查询可能因此而无法编译。

答案 1 :(得分:1)

“desc”是MySQL保留字,您只需在数据库中更改该列名即可。无论如何,你的方法根本不是随机的,只要你的id中有一个“洞”(当你删除一个成员时)它就会失败。

看看MySQL“ORDER BY RAND()”

$data = mysql_query("SELECT description FROM fq_questions ORDER BY RAND() LIMIT 1");

答案 2 :(得分: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