2015-09-25 115 views
0

我實際上看到過類似的問題「致命錯誤:未捕獲異常'PDOException'」。但是我看不到能解決我所面臨的挑戰。致命錯誤:未知的異常'PDOException'消息'SQLSTATE [HY000]:一般錯誤'.. C: xampp .. PDOStatement-> fetch().. on line 83

下面的代碼和錯誤消息

<?php 
$sql5 = " set @rownum := 0; 
set @sum := 0; 

select DISTINCT(ROUND(the_avg,4)) 
FROM (
    select water_level, 
@rownum := (@rownum + 1) as rownum, 
@sum := IF(@rownum mod 7 = 1,0 + water_level,@sum + water_level) as running_sum, 
IF(@rownum mod 7 = 0,@sum/7,NULL) as the_avg 
FROM " .$table." WHERE record_month_year = '".$startDateReport."' 
order by id ASC 
) s "; 
$result5 = $db->prepare($sql5); 
$result5->execute(); 
while ($rowReport = $result5->fetch(PDO::FETCH_ASSOC)) { 
    ?> 
    <tr style="font-size:11px;"> 
     <td><?php echo $rowReport['the_avg'] ; ?></td> 
     </tr> 
     <?php 
     } 
     ?> 

線83:

while ($rowReport = $result5->fetch(PDO::FETCH_ASSOC)) { 

錯誤:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in C:\xampp\htdocs\awos\includes\loadboreholedatareport.php:83 Stack trace: #0 C:\xampp\htdocs\awos\includes\loadboreholedatareport.php(83): PDOStatement->fetch() #1 C:\xampp\htdocs\awos\borData-report.php(46): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\awos\includes\loadboreholedatareport.php on line 83.

+1

您的查詢失敗。一次只能執行一個查詢。 'set @rownum:= 0;'是一個查詢。也沒有仔細查看其餘的查詢,可能是其他地方的錯誤;假設你在phpmyadmin或其他地方進行了測試。你可以使用http://php.net/manual/en/mysqli.multi-query.php。但是,您應該使用已準備好的語句使用參數化查詢。目前,'$ startDateReport'沒有參數化。 php.net/manual/en/pdo.prepared-statements.php – chris85

+0

嗨chris85,感謝您的快速響應,我實際上在phpmyadmin上測試過它 – Gifto

+0

在phpmyadmin上,您可以默認一次執行多個查詢。一般的PDO使用不允許。這是一個安全問題,因爲SQL注入在這一點上可以做任何事情。所以也要注意使用'multi-query'函數的時候。 – chris85

回答

0

您只能在與PDO一次做一個查詢..分開做,像這樣..

$db->query("set @rownum := 0"); 
    $db->query("set @sum := 0"); 
    $sql5 = "select DISTINCT(ROUND(the_avg,4)) 
    FROM (
     select water_level, 
    @rownum := (@rownum + 1) as rownum, 
    @sum := IF(@rownum mod 7 = 1,0 + water_level,@sum + water_level) as running_sum, 
    IF(@rownum mod 7 = 0,@sum/7,NULL) as the_avg 
    FROM " .$table." WHERE record_month_year = '".$startDateReport."' 
    order by id ASC 
    ) s "; 

其餘的將是相同的。

+0

嗨Adelphia,感謝分享,我已經試過你的建議了,現在正在收到不同的錯誤消息。新的錯誤消息'code'致命錯誤:調用成員函數fetch()在C:\ xampp \ htdocs \ awos \ includes \ loadboreholedatareport.php上的整數在第96行代碼中,這是行代碼while( $ rowReport = $ result5-> fetch(PDO :: FETCH_ASSOC)){'code' – Gifto

+0

請你幫忙。 – Gifto

+0

@Gifto,一次只請一個問題。我很樂意提供幫助,但您需要選擇我的答案並首先發佈一個新問題。 –

相關問題