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

替换您的以下行:

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 回答
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 只计算为指定字段返回的总行数。

此外,在 innodb 中使用 COUNT(*) 时要小心,因为如果不与索引上的 WHERE 子句一起使用,它将强制执行 TABLE SCAN。

于 2012-11-28T14:49:00.663 回答
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 回答