アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在タブ区切りのCSVファイルをPHPで取り込み
mySQLへINSERTするものを作ろうとしているのですが
INSERTするモノに全角が入ると文字化けているせいか
mysql_queryでFALSEが帰ってきてしまいます。

使用環境、コードを以下に書きます。
どこかおかしな点等ありましたらご教授お願い致します。

OS:windowsXP
PHP:Ver5.2.6、default_charset UTF-8
mysql:Ver5.0.51a UTF-8
取り込みたいCSV:Shift_JIS,CRLF,タブ区切り

コード(一部)
while(!feof($fp)){
$buf = fgets($fp);
$buf = mb_convert_encoding($buf, "UTF-8", "Shift_JIS");
$buf=str_replace('\r\n', '\n', $buf);
$array = preg_split("/\t/", $buf);
if($array[0] == "") {
break;
} else {
//INSERT用に加工(
$values = replaceValues($array);
}
$sql = "INSERT INTO table_name VALUES($values)";

$res = mysql_query($sql);
if(!$res){
echo "登録に失敗しました。";
echo "sql:".$sql;
mysql_close($conn);
exit;
}
$cnt++;
}

A 回答 (1件)

さまざまなエラーの可能性が考えられますが


replaceValues()はユーザー関数ですよね?
きちんとそれぞれのデータがシングルクオーテーションで
くくられていますか?

$res = mysql_query($sql) or die(mysql_error());
でデバッグすると整理できるかもしれません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
ですがすみません。たった今、自己解決しました^^;

replaceValuesではエスケープしたり、シングルクォーテーションでくくったりといった処理が入っています。

原因はDBのカラムのバイト数が足りませんでした・・
修正後はちゃんとINSERTできたのですが、今度はINSERTされたものが文字化け;
その後調べたらmysql_query("SET NAMES UTF8;");を足せばよい事に気が付き、無事解決です!

お礼日時:2009/02/05 14:54

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