2012-11-28 70 views
1

我使用下面的脚本来尝试,并在表中计算行数,我不断收到问题是错误:Mysql的统计查询返回“查询是空的”

查询为空 测验名称

和一个空白页。我是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'; 
    } 
    /////////////////////////////////////////////////////////////////////////////////////////////// 

回答

3

你的问题是,你跑错了查询,你正在运行$query而不是$query8

更改为此:

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

在第二眼,你也应该更改为:

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

为您设置numberofquestion是计数的别名。

+0

谢谢,已经摆脱了错误的,但我现在就还有回显出来的问题,它不会出现以回应问题的数量。 –

+0

谢谢,现在排序,我以为我已经复制并粘贴正确,但显然不是........它是漫长的一天! :-) –

+0

欢迎你。我浏览了你的问题,你应该开始针对你的问题回答问题。 –

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

应该

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

,因为我猜变量$查询为空你面前传递。

对于COUNT()远离COUNT(*),改为使用COUNT(field_name),为了获得更快的结果,请确保field_name位于正在使用的索引中。

Count只计算为指定字段返回的总行数。

另外,请小心在innodb中使用COUNT(*),因为如果不在索引上使用WHERE子句,它将强制执行TABLE SCAN。

2

替换您如下一行:

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

这一个:

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

由于numberofquestions是从您的查询结果集的唯一字段的名称。

2

要获取的行数在结果使用mysql_num_rows:

$numberOfRows = mysql_num_rows($result8) 
+1

如果你只选择COUNT(*),那么它总是1 ... – jeroen

1

你misstyped这

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

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

我太慢了;) – vodich

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