• 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了。

  • 相关阅读:
    Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
    Mysql中游标的使用
    xcode5下cocos2dx横竖屏设置
    VUE 小点 1
    绝对定位居中
    清楚float的方法4种
    socket模拟简单的服务器
    Django + Uwsgi + Nginx 的生产环境部署
    常见排序算法
    mro之C3算法
  • 原文地址:https://www.cnblogs.com/yolo-bean/p/7792723.html
Copyright © 2020-2023  润新知