如何从PDO中抽取错误信息?

如何从PDO中抽取错误信息?

我似乎无法从PDO获得任何错误消息:

#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );try {
  $sth = $dbh->prepare('@$%T$!!!');
  print_r($sth);
  print_r($dbh->errorInfo());} catch (PDOException $e) {
    echo $e->getMessage();}

它只发出:

PDOStatement Object(
    [queryString] => @$%T$!!!)Array(
    [0] => 00000
    [1] =>
    [2] =>)

塞塔贡帮不了什么忙。

它是PHP5.3.3 Apache2.0处理程序
启用MySQL的PDO驱动程序
客户端API版本mysqlnd 5.0.7dev-091210-$修订:300533美元

我能做些什么来获得错误信息?


慕娘9325324
浏览 797回答 4
4回答

人到中年有点甜

塞塔贡将要导致PDO抛出错误或异常-最近一次执行查询。对于模拟准备的语句,没有签入。prepare():模拟准备的语句不与数据库服务器通信,因此PDO:PREY()不检查语句。但是会有一个execute()当查询被发送到服务器时。但是,MySQL驱动程序支持自MySQL4.1以来编写的本机语句,因此这不应该适用。使用$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );必对您使用的查询造成异常。

慕尼黑的夜晚无繁华

我也是想从errorInfo()在数据库句柄级别,但我最终从语句级别获得了以下信息:PDOStatement::errorInfo()每个PHP网站:PDO:errorInfo()只检索直接在数据库句柄上执行的操作的错误信息。如果通过PDO:prep()或PDO:Query()创建PDOStatement对象并调用语句句柄上的错误,则PDO:ErrorInfo()不会反映语句句柄中的错误。必须调用PDOStatement:errorInfo()来返回对特定语句句柄执行的操作的错误信息。

慕田峪4524236

你得先execute查询,然后检查错误:所以这样做: $sth->execute();然后检查错误。如果你有任何错误的话,你会得到错误的。
打开App,查看更多内容
随时随地看视频慕课网APP