【发布时间】:2013-04-09 02:55:34
【问题描述】:
我知道 CI 2.1.3 现在支持 PDO。但是使用 pdo 函数而不是 codeigniter 函数对我来说会更舒服,现在我想扩展 PDO 并将其用作库并在控制器或其他库加载后创建 PDO 对象;这是可能的,不是吗?到目前为止我的尝试:
class Mypdo extends PDO {
public function __construct($dsn='mysql:dbname=mydbname;host=localhost',
$username='myusername',
$password='mypassword',
$driver_options=array()) {
parent::__construct($dsn, $username, $password, $driver_options);
}
}
简单的用法:
class Otherlibrary{
var $CI;
var $something_id;
public function __construct(){
$this->CI =& get_instance();
$this->CI->load->library('mypdo');
$this->something_id = 'foo';
}
public function is_something_exist(){
try{
$q = "SELECT * FROM something WHERE something_id = '$this->something_id'";
$stmt = $this->CI->mypdo->prepare($q); //<--PROBLEM
$stmt->execute();
if ($stmt->rowCount() < 1){
return false;
} else {
return true;
}
} catch (PDOException $e){
echo $e->getMessage();
}
}
}
总是返回:
致命错误:在...中的非对象上调用成员函数prepare()
我根本不是 PHP 类/对象方面的专家,所以我需要帮助来改进我的代码并使其正常工作。谢谢。
【问题讨论】:
-
我认为它有活动记录
-
@ArunKillu 我不明白,活动记录有什么关系?我该怎么办?
-
为什么在框架本身提供pdo的情况下又要实现pdo。ellislab.com/codeigniter/user-guide/database/configuration.html
-
@ArunKillu 我只是觉得使用 PDO 功能比使用 CI 的功能更舒服。
-
你的 Mypdo 文件在哪里,它的名字是什么?
标签: php codeigniter pdo