我實際上看到過類似的問題「致命錯誤:未捕獲異常'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.
您的查詢失敗。一次只能執行一個查詢。 'set @rownum:= 0;'是一個查詢。也沒有仔細查看其餘的查詢,可能是其他地方的錯誤;假設你在phpmyadmin或其他地方進行了測試。你可以使用http://php.net/manual/en/mysqli.multi-query.php。但是,您應該使用已準備好的語句使用參數化查詢。目前,'$ startDateReport'沒有參數化。 php.net/manual/en/pdo.prepared-statements.php – chris85
嗨chris85,感謝您的快速響應,我實際上在phpmyadmin上測試過它 – Gifto
在phpmyadmin上,您可以默認一次執行多個查詢。一般的PDO使用不允許。這是一個安全問題,因爲SQL注入在這一點上可以做任何事情。所以也要注意使用'multi-query'函數的時候。 – chris85