2012-11-28 68 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'; 
    }