php4 で SQLite2 を使う(参考: PHP4 で SQLite2 を使う (groundwalker.com))とき、SQLiteへ渡す文字列へは sqlite_escape_string をかける(参考:SQLite と magic_quotes_gpc (groundwalker.com))が、この sqlite_escape_string に思わぬバグがあってはまった。。。。
たとえば、
<?php echo sqlite_escape_string('text')."\n"; echo sqlite_escape_string('')."\n"; ?>
というコードの期待出力は
text
だが、実際には
text text
と、空文字列を引数に与えてこの関数を呼んだとき、前回呼び出したときの文字列が出力されてしまう。おかげで、空白のフォームフィールドに、他のフィールドの値がコピーされてしまうような結果になってしまった。いやー、原因つきとめるのに時間食っちゃった。。。
ちなみにこのバグは既に報告されたものだった。
PHP Bugs: #36867: sqlite_escape_string on '' or null returns wrong value
だけど、
CVS上では修正されてるけど、修正されたあとリリースされてないからね。CVSからとってきてコンパイルしてね。だって。。。。