php/mysql - PDO准备插入,不起作用,并且没有错误消息

Sim*_*evu 18 php mysql pdo insert prepared-statement

我现在真的不知道该怎么做,我已经盯着它好几个小时了,并且要求它......我无法让它起作用!

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;
     }
}
Run Code Online (Sandbox Code Playgroud)

Who*_*ich 40

只是想补充一点,因缺少错误信息而遭遇类似的挫折.

要阻止PDO静默失败,可以在PDO连接上设置错误模式.

$dbh = new PDO();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)

还有PDO::ERRMODE_WARNING,如果你想错误,但仍然在继续.

  • 在搜索类似(但无关的问题)的谷歌上发现这个,你节省了我的一天. (3认同)

Pek*_*ica 18

我很确定mySQL会在desc字段名称上窒息- 这是一个保留字.您必须将其放入"引号"中,或者更好地更改字段名称.

至于错误报告,请使用errorInfo方法.您可以让PDO在异常中实际输出失败查询的结果,但默认行为 - 我认为 - 只有在根本无法进行查询时才会抛出异常,但如果查询不会失败是有缺陷的.

  • 啊,好抓.我专注于对象.我假设phpMyAdmin再次罢工(在你不知情的情况下神奇地逃避保留词)! (2认同)