使用mysql_fetch_array的php while循环错误

时间:2012-08-24 08:33:55

标签: php mysql arrays fetch

我看不到:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

任何人都可以提供帮助,因为我的代码看起来很明显:

<?php
//retreive questions from database and put into question box

$query = "SELECT `QuestionId`, `Question`, `Opt1`, `Opt2`, `Opt3`, `Opt4`,`Answer` FROM `pf_questions`";

$question = mysql_query($query);

while($row = mysql_fetch_array($question)){

    $id         = $row['QuestionId'];
    $question   = $row['Question'];
    $opt1       = $row['Opt1'];
    $opt2       = $row['Opt2'];
    $opt3       = $row['Opt3'];
    $opt4       = $row['Opt4'];
    $answer     = $row["Answer"];

?>
<div id="ContainerQuestion">
    <span class="Question">Question <?php echo $id; ?>. <?php echo $question; ?></span>

        <p><input type=radio name='q<?php echo $id; ?>' value="<?php echo $opt1; ?>"> <?php echo $opt1; ?> </p>
        <p><input type=radio name='q<?php echo $id; ?>' value="<?php echo $opt2; ?>"> <?php echo $opt2; ?> </p>
        <p><input type=radio name='q<?php echo $id; ?>' value="<?php echo $opt3; ?>"> <?php echo $opt3; ?> </p>

        <p><input type=radio name='q<?php echo $id; ?>' value="<?php echo $opt4; ?>"> <?php echo $opt4; ?> </p>


</div>
<?php
}

尝试了mysql_error()并且没有输出任何内容,所以我假设我的查询是正确的?

非常感谢

4 个答案:

答案 0 :(得分:2)

您根本不会在代码中的任何位置生成 mysql连接。您确定存在与数据库的有效连接吗?

其次,交换PDO是比较明智​​的,这比旧mysql_*函数更安全,更有光泽,更好。

话虽如此,您需要使用以下内容来使用oder函数进行连接:

mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

编辑:

您可以添加以下代码部分并让我知道输出吗?

$query = "SELECT `QuestionId`, `Question`, `Opt1`, `Opt2`, `Opt3`, `Opt4`,`Answer` FROM `pf_questions`";
$question = mysql_query($query);
$num_rows = mysql_num_rows($question);
echo "$num_rows Rows<br>";

答案 1 :(得分:0)

听起来您的查询无效,因此问题变量不包含mysql_fetch_array正在等待的内容。

答案 2 :(得分:0)

您的mysql查询中似乎缺少某些内容,请匹配数据库中实际表中的字段(也匹配小写和大写)。

有时候来自所有字段和表名的` is not supported hence remove。 可能它会解决你的问题。

答案 3 :(得分:0)

不要使用mysql_ *函数。

$ question = mysql_query($ query);

如果查询失败会怎样?或者如果mysql服务器返回0行? 从手册:&#34;对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()返回成功时的资源,或者出错时返回FALSE。&#34;

if ( !$question ) {
    //Query is failed. 
    echo mysql_error(), $query; //for developer use. if error happens - you will see what happens
    exit(); //or something else you want
}

if ($question && mysql_num_rows($question) > 0) {
    while($row = mysql_fetch_array($question)){
       .....
    }
} else {
    // mysql server return 0 rows
}