standard_conforming_strings = on
で
最初は接続しない。
\' \\''
次。接続する。
\' \''
で、面白いのが次。そのままコメントアウトを戻す。
\' \''
apacheを再起動すると
\' \\''
に戻る。
phpのpg_escape_stringが接続ステータスのキャッシュを持つような動作。
なので、pg_connect()する前にpg_escape_string()をすると結果は不定、という結論。
キモイデスネー
pg_escape_string()がpg_connect()する前に動いてしまうという仕様がダメだと思う。
なので、pg_escape_string()は第二引数に変換したい文字列を入れ、第一引数にdbリソースを入れて呼ぶべきでしょう。
上記の例なら
pg_escape_string()を直接呼ぶのではなく、間に何か関数を入れてdbリソース指定なしではエラー返すようにしちゃってもいいかも。
で
最初は接続しない。
<?php $a="\\'"; //$conn=pg_connect("host=localhost dbname=test user=nobody password=nobody"); echo $a," ",pg_escape_string($a); //pg_close($conn); ?>結果は
\' \\''
次。接続する。
<?php $a="\\'"; $conn=pg_connect("host=localhost dbname=test user=nobody password=nobody"); echo $a," ",pg_escape_string($a); pg_close($conn); ?>結果は
\' \''
で、面白いのが次。そのままコメントアウトを戻す。
<?php $a="\\'"; //$conn=pg_connect("host=localhost dbname=test user=nobody password=nobody"); echo $a," ",pg_escape_string($a); //pg_close($conn); ?>結果は?
\' \''
apacheを再起動すると
\' \\''
に戻る。
phpのpg_escape_stringが接続ステータスのキャッシュを持つような動作。
なので、pg_connect()する前にpg_escape_string()をすると結果は不定、という結論。
キモイデスネー
pg_escape_string()がpg_connect()する前に動いてしまうという仕様がダメだと思う。
なので、pg_escape_string()は第二引数に変換したい文字列を入れ、第一引数にdbリソースを入れて呼ぶべきでしょう。
上記の例なら
$conn=pg_connect("host=localhost dbname=test user=nobody password=nobody"); echo $a," ",pg_escape_string($conn,$a);ですね。
pg_escape_string()を直接呼ぶのではなく、間に何か関数を入れてdbリソース指定なしではエラー返すようにしちゃってもいいかも。
コメントをかく