Php 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:常规错误”。。C:\xampp\…PDO语句->获取()。。在线83

Php 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:常规错误”。。C:\xampp\…PDO语句->获取()。。在线83,php,mysql,pdo,Php,Mysql,Pdo,实际上,我在这个致命错误上也看到过类似的问题:未捕获异常“PDOException”。但我无法用我所看到的来解决我所面临的挑战 下面是代码和错误消息 <?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(@rown

实际上,我在这个致命错误上也看到过类似的问题:未捕获异常“PDOException”。但我无法用我所看到的来解决我所面临的挑战

下面是代码和错误消息

<?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 
        }
        ?>
错误:

致命错误:C:\xampp\htdocs\awos\includes\loadboreholedatareport.php:83堆栈跟踪:0 C:\xampp\htdocs\awos\includes\loadboreholedatareport.php83:PDOStatement->fetch 1 C:\xampp\htdocs\borData-report.php46:include'C:\xampp\htdocs\htdocs…'2{main}在第83行的C:\xampp\htdocs\awos\includes\loadboreholedatareport.php中抛出


使用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 ";

其余的也一样。

您的查询失败。一次只能执行一个查询。设置@rownum:=0;这是一个疑问。也没有过多地查看查询的其余部分,可能还有其他问题;假设你之前在phpmyadmin或其他地方测试过。你可以用。但是您应该在准备好的语句中使用参数化查询。目前,$StartDaterReport未参数化。php.net/manual/en/pdo.prepared-statements.phpHi chris85,感谢您的快速响应,我实际上在phpmyadmin phpmyadmin上测试了它。默认情况下,您可以一次执行多个查询。一般PDO使用不允许这样。这是一个安全问题,因为SQL注入在这一点上可以做任何事情。所以在使用多查询函数时也要注意这个问题。感谢您的快速响应,我实际上在phpmyadmin上测试了它,代码如下:code set@rownum:=0;设置@sum:=0;选择Distinctround从选择水位中选择平均值4,@rownum:=@rownum+1作为rownum,@sum:=IF@rownummod 7=1,0+水位,@sum+水位作为运行水位,IF@rownummod 7=0,@sum/7,NULL作为id ASC scode的钻孔数据顺序的平均值,它工作得非常好。嗯,是的…你在读我的评论吗?嗨,阿德尔菲亚,谢谢分享,我已经尝试了你的建议,我现在收到了不同的错误信息。新的错误消息代码致命错误:在第96行代码中调用C:\xampp\htdocs\awos\includes\loadboreholedatareport.php中的成员函数fetch on integer,这是$rowReport=$result5->fetchPDO::fetch\u ASSOC时的行代码{code@Gifto,请一次只回答一个问题。我很乐意提供帮助,但您需要先选择我的答案并发布一个新问题。我已经能够创建一个存储过程,并且正如我前面提到的,我现在遇到了一个不同的错误。代码致命错误:在..的第99行调用一个成员函数查询整数,代码为$rowReport=$result5->query'select@out'->fetchPDO::FETCH_ASSOC{code
   $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 ";