1

次のスクリプトを使用してテーブルの行をカウントしようとしていますが、発生し続ける問題はエラーです。

クエリが空でしたクイズ名

と空白のページ。私はCOUNTに慣れていないので、私はそれを台無しにしているかもしれないと思います:-S。私のデータベースレイアウトは次のとおりです。

itsnb_chronoforms_data_createquestions cf_id ,cf_uid,cf_created ,cf_modified, cf_ipaddress,    cf_user_id, quizID, questionID, quizquestion, quizanswer1, quizanswer2, quizanswer3, quizanswer4,     questionformat ,correctanswer

私が取り組んでいるスクリプトは次のとおりです。

    // Define Quiz Variables
    $quiz = $row['quizID'];
    $quizcfid = $row['cf_id'];
    $quizname = $row['quizname'];
    // Finish Define Quiz Variables  

    ///////////////////////////////////////////////////////////////////////////////////////////////
    // Make a MySQL Connection

    $query8 = "SELECT COUNT(*) as 'numberofquestions' FROM employees WHERE quizID='$quiz'"; 

    $result8 = mysql_query($query) or die(mysql_error());

    // Print out result
    while($row8 = mysql_fetch_array($result8)){
        echo 'There are '. $row8['COUNT(quizID)'] . ' questions';
    } 
    ///////////////////////////////////////////////////////////////////////////////////////////////
4

6 に答える 6

3

あなたの問題は、あなたが間違ったクエリを実行しているということです、あなたは実行していて、そうでは$queryありません$query8

これに変更:

$result8 = mysql_query($query8) or die(mysql_error());

一見すると、次のように変更する必要があります。

echo 'There are '. $row8['numberofquestions'] . ' questions';

numberofquestionカウントエイリアスとして設定します。

于 2012-11-28T14:48:38.527 に答える
2
$result8 = mysql_query($query) or die(mysql_error());

する必要があります

$result8 = mysql_query($query8) or die(mysql_error());

以前に渡した変数$queryが空だと推測しているので。

COUNT()については、COUNT(*)から離れて、代わりにCOUNT(field_name)を使用してください。さらに高速な結果を得るには、field_nameが使用されているインデックスに含まれていることを確認してください。

Countは、指定されたフィールドに対して返された合計行を単純にカウントします。

また、インデックスでWHERE句を使用しないと、TABLE SCANが強制されるため、innodbでCOUNT(*)を使用する場合は注意が必要です。

于 2012-11-28T14:49:00.663 に答える
2

次の行を置き換えます。

echo 'There are '. $row8['COUNT(quizID)'] . ' questions';

これのために:

echo 'There are '. $row8['numberofquestions'] . ' questions';

numberofquestionsクエリ結果セットの唯一のフィールドの名前です。

于 2012-11-28T14:49:39.870 に答える
2

結果の行数を取得するには、mysql_num_rowsを使用します。

$numberOfRows = mysql_num_rows($result8)
于 2012-11-28T14:49:51.850 に答える
1

これをタイプミスしました

$result8 = mysql_query($query8) or die(mysql_error());

そしてまた

echo 'There are '. $row8['numberofquestions'] . ' questions';
于 2012-11-28T14:51:20.543 に答える
1

sqlという文は厳密に見えます。しかし、私はこれを使用します

$result8 = mysql_query($query) or die(mysql_error());
$count = mysql_fetch_row($result8);


echo 'There are '.$count[0].' '. questions';

その他のオプション:

 while($row8 = mysql_fetch_array($result8,MYSQL_ASSOC)){
        echo 'There are '. $row8['numberofquestions'] . ' questions';
    } 
于 2012-11-28T15:00:48.930 に答える