[PHP-users 30729] Re: 配列内容のデータベースのレコードへの書き出し

Naoya Harasawa harasawa @ gust.jp
2006年 11月 15日 (水) 10:58:45 JST


何かいろいろと間違っているような気がします。
($encode_valは配列ではないのにSQL文で配列指定してたり、
全角スペースが入っていたり、SQL文自体間違っていたり…)

if ($db = sqlite_open('word', 0666, $sqliteerror)) {
	$value = array(
	    array( 'ツール', 'tool', 'tools' ),
	    array( 'ユーザー', 'user', 'ゆーざー' ),
	    array( 'ファイル', 'file', 'ふぁいる' )
	);

	foreach($value as $nkey => $arrValue)
	{
		foreach($arrValue as $nkey2 => $strValue)
		{
			$arrValue[$nkey2] = mb_convert_encoding($strValue, "EUC-JP", "Shift_JIS");
		}
		
		$sql = <<< EOM
INSERT INTO thesaurus(word, dougigo1, dougigo2, dougigo3) VALUES
('{$arrValue[0]}', '{$arrValue[1]}', '{$arrValue[2]}', '{$arrValue[3]}');
EOM;
		// 一応デバッグで出力
		print $sql;
		
		sqlite_query($db, $sql);
	}
}

で一応意図したとおり動くかと思います(Apache2.2+PHP5.2で動作確認)
$arrValueの値にそのままエンコードした文字列を入れているのは微妙かもしれませんがw

Naoya Harasawa

syokora wrote:
> ご回答ありがとうございます。
> しかし、以下のようにしたのですが、やはりうまくいきません
>> 
> foreach($value as $nkey =>$arrValue) 
> { 
> 	foreach($arrValue as $nkey2=>$strValue)
> 	{
> 		$encode_val=
> mb_convert_encoding           ($strValue,"EUC-JP","Shift_JIS");
> 	//1	
> 	}
> 	sqlite_query($db_open, "INSERT INTO
> thesaurus    (word,dougigo1,dougigo2,dougigo3,) VALUES
> 
>       ('$encode_val[0]','$encode_val       
>     [1]','$encode_val[2]','$encode_val[3]')");
> }
> sqlite_close($db_open);
> 
> //1にsqlite_queryをもってくると、何も書き出されず、上記
> の状態だと、全てnullになってしまいました。。。



PHP-users メーリングリストの案内