获得警告:mysql_fetch_array()期望参数1是资源

时间:2013-08-06 19:48:26

标签: php mysql

我想从我的表中获取随机Id,称为问题并显示随机行, 使用此代码时出现错误

Warning: mysql_fetch_array() expects parameter 1 to be resource

我使用了min和max函数来获取随机数 这是代码plz我需要它

<?php 

session_start();
require_once("scripts/connect_db.php");
$arrCount = "";
if(isset($_GET['question'])){
$question = preg_replace('/[^0-9]/', "", $_GET['question']);
$output = "";
$answers = "";
$q = "";
$sql = mysql_query("SELECT MIN(id) as min_id , MAX(id) as max_id FROM questions ");
$row = mysql_fetch_array(rand($sql['min_id'],$sql['max_id']) ) or die($row."<br/>      <br/>".mysql_error());

$singleSQL = mysql_query("SELECT * FROM questions WHERE id='$question'  LIMIT 1");
    while($row = mysql_fetch_array($singleSQL)){
        $id = $row['id'];
        $thisQuestion = $row['question'];
        $type = $row['type'];
        $subject =$row['subject'];
        $exam =$row['exam'];
        $explan =$row['explan'];
        $question_id = $row['question_id'];
        $s ='<strong>'.$subject.'</strong>';
        $e ='<small>'.$exam.'</small>';
        $q = '<h2>'.$thisQuestion.'</h2>';
        $ex ='<p class="exp">'.$explan.'</p>';
        $sql2 = mysql_query("SELECT * FROM answers WHERE     question_id='$question' ORDER BY rand()");
        while($row2 = mysql_fetch_array($sql2)){
            $answer = $row2['answer'];
            $correct = $row2['correct'];
            $answers .= '<table class="table table-hover table-   bordered"> <tr>
            <td><label style="cursor:pointer;"><input type="radio" name="rads" value="'.$correct.'">'.$answer.'</label></td>
            </tr></table>
            <input type="hidden" id="qid" value="'.$id.'" name="qid"><br />
            ';

        }
        $output = ''.$s.','.$e.''.$q.','.$answers.''.$ex.' <span id="btnSpan"><button onclick="post_answer()" id="show">Submit</button></span>';
        echo $output;
       }
    }


?>

thanx提前

3 个答案:

答案 0 :(得分:2)

您似乎正在尝试直接从$sql值读取数据,这只是指向结果集的指针。

另外,我不确定您在当前实现中对这些值的处理方式。您正在尝试进行查询并将值设置为$row,但是在您使用这些值之前,您会在下一个查询之后立即覆盖$row,因此我不确定您甚至要查询的是什么。

你应该有这样的东西:

$sql = mysql_query("SELECT MIN(id) as min_id , MAX(id) as max_id FROM questions ");
$row = mysql_fetch_array($sql);

$min_id = $row['min_id'];
$max_id = $row['max_id'];

我还应该注意,您应该使用mysqliPDO代替mysql_*函数,因为这些函数已被弃用。此外,我还建议,为您的查询添加错误处理,以便涵盖所有可能的返回值。

答案 1 :(得分:1)

来自文档:

array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )

相反,你传入了:

rand($sql['min_id'],$sql['max_id']) 

这是一个int

答案 2 :(得分:1)

rand()函数生成一个随机整数。 如果在没有参数的情况下调用此函数,则返回0到RAND_MAX之间的随机整数。

所以你给mysql_fetch_array()一个整数值而不是结果对象。