作者JYHuang (夏天到了,冷不起来了说)
看板PHP
标题[讨论] 碰到了个满奇特的问题(PDO)
时间Fri Sep 7 13:29:14 2012
class web{
public $dbh;
function __construct(){
$this->dbh = new pdo(...)
}
$sql = " SELECT.... ";
$sth = $this->dbh->prepare($sql);
$sth->execute();
$res = $sth->fetch(PDO::FETCH_OBJ)
// 这一次OK
$sql = " SELEC... ";
$sth = $this->dbh->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_OBJ)
这里下第二次Query时
这里在测试主机 PHP 5.2.9 是OK的
可是在正式主机 PHP 5.1.6 就会错误了 $this->dbh是bool(false)
}
不过我把$dbh丢到class 外面去连续执行两次
$dbh = new pdo(..)
...
$sth = $dbh->prepare($sql); OK
$sth->execute();
$res = $sth->fetch(PDO::FETCH_OBJ)
$sth = $dbh->prepare($sql); OK
$sth->execute();
$res = $sth->fetch(PDO::FETCH_OBJ)
感觉起来是两个版本对class上的差异 @.@
==============找到问题了=============
就跟bug一样的神奇,很多次只要把问题丢到ptt上後,
就会很快的找到问题的解答 XDDDD
最後发现这是一个PDO的 Bug
刚刚发现的文章
http://www.joehorn.idv.tw/archives/2010/05/27/814
刚刚文章的问题并不是因为物件的关系,是因为上面提到
在PDO交差使用不同模式的fetch或query造成的bug
$db->query();
$db->prepare();
or
$sth->fetchAll();
$sth->fetch();
所以我只要从$sth取得值後unset($sth)就解决了。
而看来PHP5.2的PDO也解决了这个bug
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.105.241.201
※ 编辑: JYHuang 来自: 112.105.241.201 (09/07 13:47)
※ 编辑: JYHuang 来自: 112.105.241.201 (09/07 14:01)
1F:推 gpmm:push 09/07 14:03
2F:推 shadowjohn:很久没这样写连线方式了…帮你推一下~ 09/07 14:14
3F:→ JYHuang:shadowjohn 可以交流一下您db使用的方法吗? 09/07 14:37