home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

PHP/ADODB/アンダースコア("_")を含むDB名で嵌った件

作成日: 2006-03-11 08:02:46   /   last updated at: 2008-12-16 08:04:31
カテゴリ: PHP 

adodb.inc.phpの3670行付近、DSN形式をparse_url()で分解している箇所で、少なくともバージョン4.67と4.70の間で次のような違いがありました。

ADOdb 4.67:

if (strpos($db,'://')) {
    $origdsn = $db;
    $dsna = @parse_url($db); 

ADOdb 4.70:

if (strpos($db,'://')) 
    $origdsn = $db;
    $db = str_replace('_','%95',$db);
    $dsna = @parse_url($db);

・・・多分、parse_url()の仕様上そうなったのかもしれません。配列から値を取り出す場合は、rawurldecode()しています。

が。
http://phplens.com/lens/lensforum/msgs.php?id=14499&x=1
に有るように、"%95"はrawurldecode()しても戻らないんですよ。

→4.71では修正されたようです。というわけで、アンダースコアの問題で嵌っている方は最新版にしませう。

original url: https://www.glamenv-septzen.net/view/35