PHPの配列(foreach)を使ってテーブルにinsertする方法


$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);

と書いたのですがテーブルにデータを追加してくれません。
どこが間違っているのか分からずお手上げ状態です。
こんな質問にでもアドバイスをいただけたら幸いです。
ぜひよろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/28 23:56:31
  • 終了:2012/01/05 00:00:03

回答(0件)

回答はまだありません

  • id:tdoi
    誰も書かないようなので。
    色々ありすぎるのですが、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

    のようなエラーがでたはずです。
  • id:sryou1985
    厳しいご指摘ありがとうございます。
    軽はずみに質問してしまったと反省しました。

    回答してくださったコードで上手くデータの追加が出来ました。
    本当にありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません