かなり初歩的質問かも知れませんが、ご回答頂けれ助かります。m(__)m
現在MYSQLを使用しPHPの現在のデータを格納しようと思いました。
そこで、全角文字の中に'等が入っており、これを
mysql_escape_string(
または
mysql_real_escape_string(
を使用し格納しようとしたのですが、全角文字が文字化けしてしまい、
'全角'文字'の様に真ん中の'は文字列として残したいと思ったのですが、
'全角文字の様な形式になってしまい後ろの'がなくなってしまいました。
全角文字の部分は文字化けしていて暴゜・こんな風になってしまいます。
何か解決方法はありませんでしょうか?
まだまだ初心者の為、かなり初歩的質問かも知れませんがご回答頂けたら助かります。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
>その中のデータは色々な文字列が含まれるせいかうまく下記に記したソースではエラーがあちこちで出てしまいます
ソースがShift_JISなら、プログラムコードとして読み込む時点で、エラーになるし文字化けになるしで対策が大変です。
ま、それぞれ問題となる文字にせっせとバックスラッシュ\を付けて回るか、
データは、csvファイルにでも書き換えて、プログラムとしてではなく、ファイルから文字列変数に直接読み込めば、プログラム解釈における上記問題は、なんとか解決できるでしょう。
phpやmysqlの文字コード設定が変更可能なら、なるたけShift_JISは使わず、eucかutf8にすべきでしょう。
また、文字列に'を含みたいのに、\でエスケープもせずに''で括ってたりしませんよね?
$DATA[name] = '名前'ccc'さん';// これはどの文字コードでも、プログラムとしてエラー
$DATA[name] = '名前\'ccc\'さん';//ok
$DATA[name] = "名前'ccc'さん";//ok
あと、記載されたコードで気になるのは、この行 $tmp2 ってどこから出てきたのかな? $tmp[$i]の間違い?
list($bbsid,$userid) = split("\t",$tmp2);
この回答への補足
ご解答頂きありがとう御座います。
$tmp2はこちらで不要コード消したらそうなってしまいました。
tmp[$i]で正解です。
EUCも考えたのですが、最初PHP自体も全く素人でして、最初の作りがシフトJiSだった為
全ソースを書換となるとそれこそ・・みたいな状況でしてそのまま運用する事にしたのです。
また$DATA[name]部分なのですが、データ内は\はつけておりません。
これはやはり書きこみ等があった時には強制的につけた方がいいのでしょうか?
No.1
- 回答日時:
文字化けするのは、格納したときの文字コードと、取り出して表示するときの文字コードが異なるからじゃないのかな。
「'全角'文字'の様に真ん中の'」これはphpのコード内に記述している文字列でしょうか?
それとも、$_POSTなどから得たものでしょうか?
phpの書き方の方に問題がありそうです。ソースを提示してみて下さい。
参考URL:http://php.s3.to/man/function.mysql-real-escape- …
この回答への補足
ご解答頂きありがとう御座いました。
データは元あったデータがphpファイルにて保存されており、それをincludeした物です。
元あったデータは
$DATA[name] = '名前';
の様に保存してあります。
その中のデータは色々な文字列が含まれるせいかうまく下記に記したソースではエラーがあちこちで出てしまいます。
問題ない文字列であれば普通に動く様ですが・・
コードは現在シフトJISになっております。
お忙しい中ご解答ありがとう御座います。
お暇な時でいいので解決策がありましたら教えて下さい。m(__)m
ソースは不要そうな部分は省いておりますが、下記になります。
$CONF_dbType = "mysql";
$CONF_dbUser = "user";
$CONF_dbPass = "pass";
$CONF_dbName = "name";
$CONF_dbHost = "localhost";
$db = mysql_connect($CONF_dbHost, $CONF_dbUser, $CONF_dbPass);//データベースに接続userネーム
mysql_select_db($CONF_dbName,$db);//実行するデータベース名の選択 DBネーム
include("../config.php");
$tmp = file("../list.cgi");// $tmpに全改行コード等を含めたデータが入る
$end = count($tmp);
for ( $i = 0 ; $i <= $end ; $i++)
{
list($bbsid,$userid) = split("\t",$tmp2);
$userid = trim( $userid, '\n' );
$data_php = "$data_dir/data.php";
if(!is_readable($data_php)){
continue;
}
include($bbs_php);
$DATA[name]= mysql_real_escape_string($DATA[name]);
$adddata = "INSERT INTO bbs_set_data( userid ,id, genre, type, name) VALUES('" .
$userid . "','" . $DATA[id] . "'," . $DATA[genre] . "," . $DATA[type] . ",'" . $DATA[name] . "')";
//データベース実行命令 ↑
mysql_query("LOCK TABLES $CONF_dbName WRITE");
$query = mysql_query($adddata , $db );// 実行命令を実行する。
mysql_query("UNLOCK TABLES");
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- 英語 アルファベット順の4文字以上の英単語 10 2022/07/30 22:42
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 教えて!goo 幾つかの回答が表示されてないのですが 今現在でのgooでの回答は、 全角文字(含む英数字)で 何文字 1 2022/08/20 06:22
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
MySQLの日本語LIKE検索について
-
SQL Server のキャラクターセッ...
-
MySQL 文字化けについて
-
接続ができません
-
ERROR 1045 (28000) (using pas...
-
SQL開発環境ソフトウェアである...
-
PHP+MySQL 接続できません
-
like句を使って日本語を検索す...
-
MySQLサーバのコンピュータ名変...
-
副問合せにLIKE文を使う方法は...
-
MySQLのテーブル作成でハイフン...
-
シングルクォーテーションとダ...
-
ユーザの権限及びユーザの削除...
-
ODP.NETのバージョン確認
-
プライマリーキーの昇順でソー...
-
cseデータ閲覧時に文字化け
-
VBAで変数内に保持された二次配...
-
MYSQLで、ファイルを格納する方...
-
windows上のphpにおける全角ハ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
文字コードMS932(Windows-31J...
-
SQLで日本語データを入力したい...
-
存在しているファイルがロード...
-
急に文字化けを起こすようにな...
-
MySQL 文字化けについて
-
日本語TSVファイルのLOAD DATA ...
-
MySQL コマンド上の文字化けを...
-
mysqlのカラムaaaに、英文があ...
-
my sqlで文字化け
-
PHP経由でMYSQLに全角文字を格...
-
MySQL 日本語表示 日本語入力...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
ERROR 1045 (28000) (using pas...
-
VBAで変数内に保持された二次配...
-
like句を使って日本語を検索す...
おすすめ情報