$fruits = array(
0 => りんご,
1 => みかん,
2 => スイカ
);
$sql = sprintf('insert into fruits set
fruit1="%s", fruit2="%s",fruit3="%s"',
foreach($fruits as $value)
{
mysql_real_escape_string($value),
}
);
mysql_query($sql, $link);
と書いたのですがテーブルにデータを追加してくれません。
どこが間違っているのか分からずお手上げ状態です。
こんな質問にでもアドバイスをいただけたら幸いです。
ぜひよろしくお願いします。
コメント(2件)
色々ありすぎるのですが、SQLとPHPと基本的なことくらいは、ちゃんと勉強しましょう。
まず、SQLからですが、insertとupdateの構文がごちゃ混ぜになってます。
INSERT INTO テーブル名 (フィールドリスト) VALUES (データリスト)
が基本構造です。
質問の記述は、
UPDATE テーブル名 フィールド名 = データ
の構造と混ざってます。
次にPHPですが、そもそもこれって実行できませんよね?
引数として、foreach構文を渡したりはできません。
素直に、
$sql = sprintf("insert into fruits (fruit1, fruit2, fruit3) VALUES ('%s', '%s', '%s')"
mysql_real_escape_string($fruits[0]),
mysql_real_escape_string($fruits[1]),
mysql_real_escape_string($fruits[2]),
);
とでも書いてください。こう書くと、すでにsprintf使う意味ないかもですが。
あと全般的に、せめてエラーを見ましょう。
PHP Parse error: syntax error, unexpected T_FOREACH in XXXX on line 11
普通に実行するとこういうエラーが出ませんか?これだけで、そもそも構文エラーだと言うことが分かりますし、あなたがこのエラーの意味が分からなくても、それを載せることで、あなたの問題が解決する可能性は飛躍的に上がります。
また、仮に構文エラーがなかったとしても、上記のSQLの問題が残っていれば、
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fruit1 = 'りんご', fruit2 = 'みかん', fruit3 = 'スイカ'' at line 1
のようなエラーがでたはずです。
軽はずみに質問してしまったと反省しました。
回答してくださったコードで上手くデータの追加が出来ました。
本当にありがとうございます。