我想从我的表中获取随机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提前
答案 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'];
我还应该注意,您应该使用mysqli
或PDO
代替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()一个整数值而不是结果对象。