Этот PDO подготовился, оператор возвращает false, но не бросает ошибку

Этот код не бросает ошибку, но сбои запроса, то есть, execute метод возвращает false. Как это могло быть?

require_once("Abstracts/DBManager.php");
require_once("UI/UI.Package.php");
class BlogDBM extends DBManager
{
     private $table = "blog_records";
     function saveRecord($title,$url,$desc,$feedId,$pubDate)
     {
      $PDO = $this->db->connect();
      try
  {

   $query = $PDO->prepare("
    INSERT INTO ".$this->table."
    (title,url,desc,feed_id,pubdate) VALUES
    (:title,:url,:desc,:feed_id,:pubdate)");
   $query->bindParam(":title", $title);
   $query->bindParam(":url", $url);
   $query->bindParam(":desc", $desc);
   $query->bindParam(":feed_id", $feedId, PDO::PARAM_INT);
   $query->bindParam(":pubdate", $pubDate, PDO::PARAM_INT);
   $query->execute();
   //return $PDO->lastInsertId();


  } catch(PDOException $e)
  {
   echo "Error " . $e->getMessage();

  }
  $PDO = NULL;
     }
}
18
задан Félix Gagnon-Grenier 22 June 2019 в 16:27
поделиться

2 ответа

Я почти уверен, что MySQL подавляется именем поля desc - это зарезервированное слово. Вам придется заключить его в кавычки "`" или, лучше, изменить имя поля.

Что касается сообщения об ошибках, используйте метод errorInfo. Вы можете заставить PDO действительно выводить результат неудачного запроса в исключение, но по умолчанию, как мне кажется, PDO выбрасывает исключение только в том случае, если запрос не может быть выполнен вообще, но не выводит его, если запрос ошибочен.

18
ответ дан 30 November 2019 в 05:54
поделиться

Просто хотел добавить к этому, у меня были похожие разочарования из-за отсутствия сообщения об ошибке.

Чтобы предотвратить молчаливый отказ PDO, вы можете установить режим ошибки для соединения PDO.

$dbh = new PDO();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Существует также PDO::ERRMODE_WARNING, если вы хотите, чтобы ошибки возникали, но работа все равно продолжалась.

40
ответ дан 30 November 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: