Think PHP在3.2之后好像就不支持PDO扩展了,然后我为了用PDO在控制层中写了一个php文件,里面只是写了实例化PDO的一段代码,我在控制请中引入这个文件,刚开始连接查询数据的时候没有错误,但是好像是有返回值的时候就报了一个——“**Call to a member function query() on a non-object**”的错误,有哪位了解的,请教下
pdo.class.php <?php $PDO = new PDO('mysql:host=localhost;dbname=cxshop', 'root', '',array( PDO::ATTR_PERSISTENT => true)); ?>
CommonController.class.php public function checkPDO($rolename,$mid=1){ if (intval($mid) > 0) { require_once('Pdo.class.php'); $res = $PDO->query("SELECT r_id as rid FROM `shop_role` where r_method='$rolename' limit 1"); // $roleres = $res->fetch(2); $checkmethID = $roleres['rid']; // dump($checkmethID);exit; $res = $PDO->query("SELECT gid FROM `shop_ag_access` where mid='$mid'"); $agres = $res->fetchAll(2); if($checkmethID){ foreach ($agres as $key => $value) { $rges = $PDO->query("SELECT rid FROM `shop_rg_access` where gid='".$value['gid']."'"); $rges = $rges->fetchAll(2); if (!$rges) { return fasle; } $rgarr = array(); foreach ($rges as $kk => $val) { $rgarr[] = $val['rid']; } $agres[$key]['gid'] = $rgarr; } $PDO = null; $arr = array(); foreach ($agres as $key => $value) { $arr[] = $value['gid']; } foreach ($arr as $key => $value) { if (in_array($checkmethID, $value) == true) { return true; } } return false; }else{ return false; } }else{ return false; } }
上面的代码可以忽略不看,就是think php链接pdo的问题
Think PHP在3.2之后好像就不支持PDO扩展了,然后我为了用PDO在控制层中写了一个php文件,里面只是写了实例化PDO的一段代码,我在控制请中引入这个文件,刚开始连接查询数据的时候没有错误,但是好像是有返回值的时候就报了一个——“**Call to a member function query() on a non-object**”的错误,有哪位了解的,请教下
pdo.class.php <?php $PDO = new PDO('mysql:host=localhost;dbname=cxshop', 'root', '',array( PDO::ATTR_PERSISTENT => true)); ?>
CommonController.class.php public function checkPDO($rolename,$mid=1){ if (intval($mid) > 0) { require_once('Pdo.class.php'); $res = $PDO->query("SELECT r_id as rid FROM `shop_role` where r_method='$rolename' limit 1"); // $roleres = $res->fetch(2); $checkmethID = $roleres['rid']; // dump($checkmethID);exit; $res = $PDO->query("SELECT gid FROM `shop_ag_access` where mid='$mid'"); $agres = $res->fetchAll(2); if($checkmethID){ foreach ($agres as $key => $value) { $rges = $PDO->query("SELECT rid FROM `shop_rg_access` where gid='".$value['gid']."'"); $rges = $rges->fetchAll(2); if (!$rges) { return fasle; } $rgarr = array(); foreach ($rges as $kk => $val) { $rgarr[] = $val['rid']; } $agres[$key]['gid'] = $rgarr; } $PDO = null; $arr = array(); foreach ($agres as $key => $value) { $arr[] = $value['gid']; } foreach ($arr as $key => $value) { if (in_array($checkmethID, $value) == true) { return true; } } return false; }else{ return false; } }else{ return false; } }
上面的代码可以忽略不看,就是think php链接pdo的问题
“on a non-object”说明你调用了对象不存在的方法,或这个对象没有实例化。检查下代码,留意在调用对象的方法的位置。
试试把query换做exec
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号