プロが教えるわが家の防犯対策術!

MySQL4.1を導入したのですが一部文字が入力できないときがあります。
MySQL4.0の時は不具合はおきませんでした。

MySQLのキャラクタセットはすべてsjisに設定しました。
character_set_client sjis
character_set_connection sjis
character_set_database sjis
character_set_results sjis
character_set_server sjis
character_set_system utf8

MySQL・phpでサイトを構築しているのですが
入力フォームで文章が「ソ」「表」で終わると、登録に失敗します。
shift-jisの特殊文字ですので「ソ\」「表\」のようになり、SQL文のシングルコーテーションが文字列(\')と認識されると思うので下記置き換えで大丈夫かと思いましたが、また失敗しました。

$text = str_replace("\\","\\\\",$text);
$text = str_replace("'","\'",$text);

MySQL4.1はホントに難しいです…
お分かりになる方いましたらよろしくお願いします。

A 回答 (1件)

4.1系で起こる文字化けの症状とはちょっと違いますね。


一応参考までに。
http://phpspot.net/php/pgMySQL4.1%8CnUTF-8%82%CC …
http://www.lab.keiken.co.jp/wiki/index.php?Tips% …

で、今回の件ですがこれでうまくいくかもしれません。
php.iniの設定でmagic_quotes_gpcがONかOFFか見て下さい。
もしONであれば、フォームから送信されたデータはエスケープされてます。
表→表\になっているということです。
置き換えは、エスケープ解除すればいいだけなのでstripslashes関数を使ってみて下さい。

$text = stripslashes($text);

4.0から4.1に上げたようですが、4.1は問題が多いので
それなら一つ飛ばして5.0に上げたほうがいいと思います。
もしくは4.0の方が安定してます。
    • good
    • 0

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