CI 2.1.3 が PDO をサポートするようになったことは知っています。しかし、codeigniter関数の代わりにpdo関数を使用する方が快適です.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 クラス/オブジェクトの専門家ではないので、コードを改善して機能させるために助けが必要です。ありがとう。