PDO錯誤調試
阿新 • • 發佈:2017-11-06
show exist lec array 調試過程 roo test dbn state
on line 17
原因是$pdo->errorInfo()返回的是一個數組,而我試圖用echo輸出結果,改用print_r()或var_dump()打印數組就OK了。
在服務器上用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
原因是$pdo->errorInfo()返回的是一個數組,而我試圖用echo輸出結果,改用print_r()或var_dump()打印數組就OK了。
PDO錯誤調試