1. 程式人生 > >PDO錯誤調試

PDO錯誤調試

show exist lec array 調試過程 roo test dbn state

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

PDO錯誤調試