-4

question というテーブルからランダムな ID を取得し、ランダムな行を表示したいのですが、このコードを使用するとエラーが発生します

Warning: mysql_fetch_array() expects parameter 1 to be resource

ランダムを取得するためにmin関数とmax関数を使用しました。これが必要なコードplz iamです

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


?>

あらかじめ

4

3 に答える 3

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'];

また、これらは非推奨であるため、関数の代わりにmysqliorを使用することを検討する必要があることにも注意してください。さらに、クエリにエラー処理を追加して、可能なすべての戻り値をカバーすることもお勧めします。PDOmysql_*

于 2013-08-06T19:52:26.630 に答える
1

ドキュメントから:

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

代わりに、次を渡しました。

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

これはintです

于 2013-08-06T19:51:40.493 に答える
1

rand() 関数はランダムな整数を生成します。この関数をパラメーターなしで呼び出すと、0 から RAND_MAX までのランダムな整数が返されます。

したがって、結果オブジェクトの代わりに mysql_fetch_array() に整数値を与えています。

于 2013-08-06T19:59:13.557 に答える