thinkphp底层调用PDO访问数据库时报错


在访问SQL SERVER数据库时,Thinkphp调用的是PDO数据库访问驱动。


如果PDO对象在调用prepare()时出现了错误,thinkphp底层并没有打印出PDO的报错信息,怎么才能知道错误信息呢?


使用下面的PDO自带静态方法即可:




http://php.net/manual/zh/pdostatement.errorinfo.php


  • PDO::errorInfo() - Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() - 获取跟上一次语句句柄操作相关的 SQLSTATE
  • PDOStatement::errorInfo()


然后我得到了我的PDO错误信息:


PDO::errorCode(): select top 1 isnull(channel,'no channel') channel from tb_goshop_lctotc where tc='216238'
array(4) { [0]=> string(5) "42S02" [1]=> int(195) [2]=> string(137) "[FreeTDS][SQL Server]Invalid object name 'tb_goshop_lctotc'. (SQLPrepare[195] at /usr/local/src/php-5.3.8/ext/pdo_odbc/odbc_driver.c:206)" [3]=> string(5) "42000" } 



这个表tb_goshop_lctotc找不到,好吧,我知道了,我切换了数据库的linkid导致了访问此linkid的资源时没有此数据表。



你可能感兴趣的:(PHP,pdo)