PDO错误调试

在服务器上用PDO操作数据库,怎么都获取不到数据,query语句返回null,但是同样的代码在本地运行无误。SO,开始找bug。

<?php
 $host='localhost';
        $dbname='my';
        $user="root";
        $password="root";
        $dsn="mysql:host=$host;dbname=$dbname";
        try{
             $pdo=new PDO($dsn,$user,$password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8';"));
        }catch(PDOException $e){
            die("错误:".$e->getMessage());
        }

        // $sql="select title,descript,picUrl,url from aa";
        $sql="select * from aa";
        $res=$pdo->query($sql);
        if($res==null){
        	show($pdo->errorInfo()); 
        }

  输出:

Array
(
    [0] => 42S02
    [1] => 1146
    [2] => Table 'my.aa' doesn't exist
)

  够傻吧,我只在本地数据库上建表了,完全忘了和服务器数据库不是一回事。

总结两个知识点:

1、$res=$pdo->query($sql); 成功的话返回一个PDOStatement对象,失败返回空。

2、$pdo->errorInfo()获取错误信息。输出一个数组。

3、调试过程中遇到了这个错误提示:Notice: Array to string conversion in /var/www/html/wx/test.php on line 17  
  原因是$pdo->errorInfo()返回的是一个数组,而我试图用echo输出结果,改用print_r()或var_dump()打印数组就OK了。

 

posted @ 2017-11-06 13:35  yolo_bean  阅读(437)  评论(0编辑  收藏  举报