- ベストアンサー
MYSQLにINSERTできない問題とは?
- MYSQLのWHERE文の中でINSERTができない問題について相談です。
- メールを指定した時間に送信するための手順がうまくいかず困っています。
- 送信先メールアドレスを抽出しながらMYSQLへのINSERTを行いたいが、一度しかINSERTされません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
説明が不足していたようですいません。 最初に select した際には、 customer のテーブルの情報が 5件 $rst にデータが積み込まれているかと思います。 (該当レコードがあればの話ですが) それの積み込まれた情報を一件ずつ while文にて処理されて行く処理イメージだと思ったのですが insert した際に 5 件のデータが積み込まれたデータが insert の実行結果の一件に変更されてしまっている様に見えます。 続けて処理をされるのであれば、 insert した結果値は $rst に受け取らないで別変数で受けて処理する 形になるかと思います。
その他の回答 (1)
- yamada404
- ベストアンサー率56% (9/16)
最初のselectした $rst = mysql_query($sql , $con); の結果セットの中に INSERT INTOの結果セットを入れているから中身が変わってないですか? selectした結果の$rstと insertした結果の$rstと見比べてみては?
補足
アドバイスありがとうございます!! 早速見比べてみました。 select * from.......は「phpMyAdmin」で実行するとキチンと期待する結果です。 PHPで実行すると。 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/v・・・・・・・・・/select33.php on line 78 (78行目は while($col = mysql_fetch_array($rst)) { です。) INSERT INTO mail_queue_timer (timermailID,customerID,jikan ,sender , recipient ,headers, body ) VALUES (1244870735, 1,10 , "送信元メールアドレス" , "1001@********com" ,"タイトル" , "本文" ) そして、INSERT INTO の中身は「一番目の結果」でした。そしてそれはデータベースに入っていました。 (1件だけ) すみません、何が間違っていますでしょうか?
お礼
出来ました!! $rst を $result に変えてみました。 print $sql; をwhile文 の外に置いてみていたので、最後の一回しか 表示してないので、変えてもうまく行かないなあ、と思っていました。 しかし、データベースを良く見てみると全部インサートできていました。 よく考えると、頂いた回答が理解できます! 大変分かりやすい回答ありがとうございました!!
補足
はい! まさにその通り、結果をインサートしたいのです。 while文は5回回っていますので、その中にインサート文を入れたらいいと単純に考えていました。 while文の中で $name などは5回回っていて、[print $name;] とすると5人分出てきます。 別変数で受け取るとはどのようにしたら良いでしょうか? すみません、宜しくお願いいたします。