作用域的不同,找不到
fetchAll 是 pdo 的方法
好像是没问题了。。。。是连接上了。。
errorInfo()的值为数组。。你不先赋值 就 echo 只能 echo $xx->errorInfo()[0];
写着也不好看嘛,一步步写也好找bug好改嘛等。
这个表 user1,不存在。应该你联的数据库里没有
???999
怎么显示的?你直接打印你查出的数据的?应该是你写的输出的代码有问题,你再检查下吧。
self::$link=new PDO($configs['$dsn'],$configs['$username'],$configs['$password'],$configs['$params']);
这里错了吧,不需要用到$符
public static function haveErrorThrowException(){ $obj=empty(self::$PDOStatement)?self::$link: self::$PDOStatement; $arrError=$obj->errorInfo(); //print_r($arrError); if($arrError[0]!='00000'){ self::$error='SQLSTATE: '.$arrError[0].' <br/>SQL Error: '.$arrError[2].'<br/>Error SQL:'.self::$queryStr; self::throw_exception(self::$error); return false; } if(self::$queryStr==''){ self::throw_exception('没有执行SQL语句'); return false; } }
你是说这个吗?不是两个都是一层if吗?~没有触发等级关系哟~
这个你要结合类中的query方法来看,在定义的query方法中通过:
self::$PDOStatement = $link->prepare(self::$queryStr);
给属性$PDOStatement赋值了。而在你说的getAll方法中首先调用了query方法,在调用的时候就给属性$PDOStatement赋值了,所以在后面就可以使用该对象的fetchall方法了。
单从字面上看,确保用的是同一个连接资源。
我们使用的是单例模式
^-^...
^-^...