$db['test']['username'] = "username";
$db['test']['password'] = "passwd";
$db['test']['database'] = "db_name";
$db['test']['dbdriver'] = "postgre";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = TRUE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
pconeect 持続的接続は使用しない方がいい。
OSのプロセスが残って不安定になる。
2011/07/15
2011/07/08
codeigniterでpostgresqlで文字化けが治らない場合の対処
またしてもcodeingiterのポスグレのバグを発見しました(通算3つ目)
・phpからpostgresにclient_encodingを送っていない
postgresqlはアプリケーション側でclient_encodingを設定していないと
設定ファイルに書いてあるデフォルトのclient_encodingに変換して結果を返してきます。
修正箇所は
system/database/drivers/postgre/postgre_driver.php
145行目 db_set_charset
中身は無しでコメントにて
// @todo - add support if needed
ふざけんなと( ゚Д゚)ヴォケ!!
pg_set_client_encoding($this->conn_id , $this->char_set);
これで文字化けが直りました。
しかし本当にcodeigniterのpostgresドライバは信用出来ない。
他にも色々バグありそう
・phpからpostgresにclient_encodingを送っていない
postgresqlはアプリケーション側でclient_encodingを設定していないと
設定ファイルに書いてあるデフォルトのclient_encodingに変換して結果を返してきます。
修正箇所は
system/database/drivers/postgre/postgre_driver.php
145行目 db_set_charset
中身は無しでコメントにて
// @todo - add support if needed
ふざけんなと( ゚Д゚)ヴォケ!!
pg_set_client_encoding($this->conn_id , $this->char_set);
これで文字化けが直りました。
しかし本当にcodeigniterのpostgresドライバは信用出来ない。
他にも色々バグありそう
2011/06/07
codeigniterでpostgresqlのlike検索にバグがある件
基本的にMySQL向けに作られているフレームワークだとしてもこれはさすがにひどいでしょ。。。
バグは2点みつけてます。
CIのバージョンは1.7.3です。
①点目
[RESOLVED] Undefined property: CI_DB_postgre_driver::$_like_escape_char | CodeIgniter Forums
↑のURLに書いてあるとおりただのスペルミスです。。
②点目
「%(パーセント)」「_(アンダースコア)」を含むライク検索が出来ない。
/database/drivers/postgre/postgre_driver.php
299行目
str_replaceでエスケープを行っているが配列の順番がおかしいため
エスケープ文字が2コ付くようになってしまっています。
下記のように修正
置換前、置換後の配列の3番目の要素をそれぞれ1番目にもってくる。これでOK。
こんなすぐ分かるバグぐらい誰かフィックスしとけよと。
バグは2点みつけてます。
CIのバージョンは1.7.3です。
①点目
[RESOLVED] Undefined property: CI_DB_postgre_driver::$_like_escape_char | CodeIgniter Forums
↑のURLに書いてあるとおりただのスペルミスです。。
From
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_char);
To
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_chr);
②点目
「%(パーセント)」「_(アンダースコア)」を含むライク検索が出来ない。
/database/drivers/postgre/postgre_driver.php
299行目
$str = str_replace( array('%', '_',$this->_like_escape_chr),
array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_' , $this->_like_escape_chr.$this->_like_escape_chr),
$str);
str_replaceでエスケープを行っているが配列の順番がおかしいため
エスケープ文字が2コ付くようになってしまっています。
下記のように修正
$str = str_replace( array($this->_like_escape_chr ,'%', '_'),
array($this->_like_escape_chr.$this->_like_escape_chr ,$this->_like_escape_chr.'%', $this->_like_escape_chr.'_' ),
$str);
置換前、置換後の配列の3番目の要素をそれぞれ1番目にもってくる。これでOK。
こんなすぐ分かるバグぐらい誰かフィックスしとけよと。
ラベル:
bug,
codeigniter,
php
2011/05/28
CodeIgniterの_remap
CodeIgniterの_remapメソッドでパラメータを指定する方法
この方法でも出来そうだったけどフレームワーク部分に手を加えたくなかったのでこうしてみた
多分大丈夫のはず
この方法でも出来そうだったけどフレームワーク部分に手を加えたくなかったのでこうしてみた
function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
call_user_func_array(array(&$this, $method), array_slice($this->uri->rsegments, 2));
}
}
多分大丈夫のはず
登録:
投稿 (Atom)