在服务器上用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了。