プロが教える店舗&オフィスのセキュリティ対策術

表題の件で質問させてください。

現在、symfony version 1.0.8 にて開発を行っています。
MySQLに接続して、検索SQLを実行しているのですが、どうもカタカナが混じっていると検索にヒットしません。
そこでSQLを
print_r(TableNamePeer::doSelectRS($criteria));
で表示させてみたところ、magic_quotes_gpcがOn の時のように、バックスラッシュが含まれていました。

・htaccess で、magic_quotes_gpcはOffにセットしています。
・$pear_data_dir/symfony/config/php.yml のmagic_quotes_gpcも offになっています。

バックスラッシュは下記のような感じで付け加えられてしまっています。
ソフト→\ソフ\ト

どこをいじれば治るのか、調べ切れなかったのでご存知の方がいらっしゃったら、ご教授下さい。
宜しくお願い致します。

A 回答 (1件)

shift_jisをやめれば直ります。


shift_jisの ソ などの 文字コードと \ の文字コードがかぶっているために起こる現象です。
http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.9 …

magic_quotes_gpc = off にするのは。php遣いの中では当然の処理です。

この回答への補足

ソースを追って調べてみたところ、mysql_real_escape_string でバックスラッシュがついていました。
ただ、上記は shift_jis の問題との事なのですが、文字コードはUTF-8に設定されています。
mysql_real_escape_string する前に、下記で試しました。

-------------------------
echo $str."<br>";
echo get_magic_quotes_gpc()."<br>";
echo mb_detect_encoding($str)."<br>";
echo implode(", ", mb_detect_order())."<br>";
echo mysql_real_escape_string($str, $con)."<br>";
-------------------------
結果
-------------------------
ソフト
0
UTF-8
UTF-8, ASCII, JIS, EUC-JP, SJIS
\ソフ\ト
-------------------------

また、データベースの問題化と思い
show variables like 'character%';
で調べてみたのですが、結果は下記の通りになりUTF-8に設定されています。

| character_set_client utf8
| character_set_connection utf8
| character_set_database utf8
| character_set_filesystem binary
| character_set_results utf8
| character_set_server utf8
| character_set_system utf8

他に確認するところはありますでしょうか?
宜しくお願いします。

補足日時:2009/01/12 13:37
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
文字コードは、UTF-8で設定しているつもりなのですが、どこかの処理でshift_jisになってしまっているという事でしょうか?

フォームで受け取った値を、$criteria にaddしているんですが、直前で$_POSTなどで表示させてみると、バックスラッシュはついていません。

もう少し調べてみます。

お礼日時:2009/01/12 11:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!