![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
PHPで作成したWEBページでMySQLのデータを更新すると、特定文字のみ文字化けします。
現在、発見されているのは”予定”という文字です。
文字化けすると”嵐閨”という文字になります。
サーバ環境はLinuxFedoraCore3、Apache2.0.52、PHP4.3.11、MySQL4.1.10です。
phpMyAdminから同じテーブルへ”予定”という文字を入力すると、問題なく表示されています。
PHPで作成したコマンド・コードが悪いのではなく、
httpd.confやphp.iniの設定が悪いように思うのですが、何が悪いのか分かりません。
このような症状についてご存知でしたら、ご指導願いします。
No.2ベストアンサー
- 回答日時:
$sql全体をエスケープするのじゃなくてセットする値のみをエスケープします。
この場合は
$location= mysql_escape_string($location);
$color= mysql_escape_string($color);
$sql = "update location_tbl set location = '$location', color = '$color'";
$resultId = mysql_query($sql);
になります。
二度にわたる親切な回答に感謝しております。
重ね重ねありがとうございます。
回答に通りに変更したところ、正常に動作いたしました。
mysql_escape_stringについて、知識がなかったものでwebで調べたところsql全体をエスケープしていたものをみたもので使い方を誤って認識していました。
まったく同じモジュールを、Windowsのwebサーバーで動かすと、問題なく動くのが不思議です。
apache、php、MySQLともほぼ同じバージョンなのですが。
apache、php、MySQL等の言語の設定かとも思い、my.cnfファイルを変えたり、データベースオープン時にmysql_set_character_setを加えたりしてみたのですが、解決できませんでした。
問題が解決できとても助かりました。
ありがとうございました。
No.1
- 回答日時:
予定 97 5C 92 E8
嵐閨 97 92 E8 81
予定の予に含まれる5C(アスキー文字で\)が取り除かれたための文字化けと思われます。
MySQLに文字をinsertする前に文字をmysql_escape_string()でエスケープしてないのではないでしょうか。
回答ありがとうございます。
おっしゃる通りの不具合でした。
「予\定」と入力すると、正常に表示されました。
mysql_escape_string()を以下のように作ってみたのですが、データの更新に失敗してしまいます。
$location = "社長室";
$color = "#FFFFFF"
$sql = "update location_tbl set location = '$location', color = '$color'";
print "$sql";
$sql = mysql_escape_string($sql);
print "$sql";
$resultId = mysql_query($sql);
mysql_escape_string()の前後に$sqlをプリントさせたところこのようになりました。
前: update location_tbl set location = '社長室', color = '#FFFFFF'
後: update location_tbl set location = \'社長室\', color = \'#FFFFFF\'
mysql_escape_string()は成功しているようなのですが、
データベースの更新に失敗している理由が分かりません。
ご指導お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- MySQL 私の考えていることは ・mySQL ・PHP ・web制作 この三つのスキルがあれば実現しますか? 4 2023/08/19 02:48
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
- PDF PDFソフト 1 2023/08/23 16:14
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのエラーについてです
-
Resource id #3 をフィールドの...
-
連想二次元配列のUNIXTIMEでの...
-
sprintf関数での%Sが分かりませ...
-
XAMMPが起動しません。
-
mysql_fetch_objectのエラー
-
リストから詳細画面に遷移する...
-
検索結果の分割表示時のSQLエラー
-
インクルードによる不具合
-
MySQLに登録したデータをPHPで...
-
"と'の使い方を教えていただけ...
-
これでSQLインジェクション対策...
-
PHP と Mysql の連携時に発生す...
-
MySQLへデータ入力時の文字化け
-
MYSQLと連動したBASIC認証について
-
PHPの記述で値が取れません。
-
DBから抜き出した値を表示する方法
-
SQL Serverからのvarchar型のデ...
-
php テーブルを作れない
-
例外処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpのエラーについてです
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHPで絞り込み検索結果の件数を...
-
MySQLのデータを使ってプルダウ...
-
XAMMPが起動しません。
-
mysql_fetch_objectのエラー
-
mysql_resultのエラー
-
CSVをダウンロードさせた際、CS...
-
stringaddslashes 半角¥が消える
-
「mysqlclient」の事が分からな...
-
XAMPPで画面が真っ白になります。
-
会員登録したらメールが送られ...
-
PHP+mysqlでSQL文に文字数制限...
-
連想二次元配列のUNIXTIMEでの...
-
PHP/MySQL SQLエラーについて。
-
変数同士の引き算が出来ない
-
PHPでMySQLのレコードを削除したい
-
すいません。
-
インクルードによる不具合
おすすめ情報