在查询工作时跟踪 PDOException 基因执行


track PDOException genereal execption when query works

我有一段非常简单的代码。 我使用 AJAX 和 PHP 来更新 MySQ 表并发生正确的更改,但每次执行时都会收到此错误:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in /var/www/html/rollcall/classes/class.user.php:176'nStack trace:'n#0 /var/www/html/rollcall/classes/class.user.php(176): PDOStatement->fetchAll(2)'n#1 /var/www/html/rollcall/appeal-handler.php(8): USER->appealIsRead('112')'n#2 {main}'n  thrown in /var/www/html/rollcall/classes/class.user.php on line 176, referer: http://localhost/rollcall/views/notifications.php

现在,journy从这个JS函数开始:

function removeAppeal(appeal_id){
document.getElementById('an_'+appeal_id).style.display = "none";
  jQuery.ajax({
       url: '../appeal-handler.php',
       type: 'POST',
       data: { appealId: appeal_id },
       complete: function(data, status)
       {
           if(status=='success')
           {
              alert('saved!');
           }
       }
   });
};

并移至此 PHP 代码:

<?php
require_once("classes/class.user.php");
$auth_user = new USER();
$appeal_id = $_POST['appealId'];
if($auth_user->appealIsRead($appeal_id)){
  return  true;
};
?>

以执行此 USER 方法结束:

public function appealIsRead($appeal_id){
    $stmt = $this->conn->prepare("UPDATE appeals SET `read` = 1 WHERE `appeal_id` = :appeal_id");
    $stmt->execute(array(':appeal_id' => $appeal_id));
    $result = $stmt->fetchall(PDO::FETCH_ASSOC);
    return $result;
}

这里是否缺少验证 IM 或某种处理不当?感谢

您正在尝试对UPDATE查询使用fetchall(),该查询不会返回任何可获取的结果。要使用 fetchall(),查询必须是SELECT ...

让你的函数返回 $stmt 而不是 fetchall() 结果