Think PHP在3.2之後好像就不支援PDO擴充了,然後我為了用PDO在控制層中寫了一個php檔案,裡面只是寫了執行個體化PDO的一段代碼,我在控制請中引入這個檔案,剛開始串連查詢資料的時候沒有錯誤,但是好像是有傳回值的時候就報了一個——“**Call to a member function query() on a non-object**”的錯誤,有哪位瞭解的,請教下
pdo.class.php true));?>
CommonController.class.phppublic 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 true));?>
CommonController.class.phppublic 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