• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでMySQLのデータベースにアクセスする際、)

phpでMySQLのデータベースにアクセスする際の条件を使ったinsert方法

このQ&Aのポイント
  • phpでMySQLのデータベースにアクセスし、条件(age < 60)を使用してデータを表示します。しかし、同じ条件を使ってinsertしようとするとエラーが発生し、上手くいきません。
  • WHERE句を使った状態でinsertする方法を教えてください。
  • 環境はレンタルサーバです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

まずdieをつかうなら mysql_query($sql, $conn) or die(mysql_error()); などして、エラーの状況を確認することです。 単純に最初に発行したsqlがなんらかの文法エラーでも起こしているのではないかと 暗に推測されますが・・・

nyandafull
質問者

お礼

ありがとうございました

nyandafull
質問者

補足

どうやらPOSTしたデータが、新しくデータを追加して更新した時に、ページ内のPOSTがうまくいってなかったようです。ありがとうございました。

その他の回答 (4)

回答No.5

横からですが一言。 質問者は「ありがとうございました」と書いて解決したかに見えますが、 SQL文法の基本をすっとばしたままになっているような気がします。 他の回答者も指摘している通り、 WHERE句はINSERT文では使用できません。 WHERE句が使用できるのは、SELECT文、UPDATE文、DELETE文です。 これをしっかりおぼえておいたほうが良いでしょう。 あいまいなままにしておくと一難去ってまた一難を繰り返すだけです。

回答No.3

こんにちは。 意味がさっぱりわかりません・・・。 INSERT句にWHERE付けるの???

nyandafull
質問者

補足

$sql = "SELECT id, name, address, age FROM list WHERE age < 60"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $data1 = $HTTP_POST_VARS["inpdata1"]; $data2 = $HTTP_POST_VARS["inpdata2"]; $data3 = $HTTP_POST_VARS["inpdata3"]; $sql = "INSERT INTO `list` (`name`, `address`, `age`) VALUES ('$data1','$data2','$data3')"; mysql_query($sql, $conn) or die("データ追加エラー"); でエラーがでるということです。WHERE age < 60をORDER BY idなどにするとエラーはでないのですが、同じページ内で、60歳以下の人を表示したいので、WHERE age < 60を使っています。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

SQL的なロジックがおかしいですね 「ageが60以上の人が一人もいない場合インサートしたい」ということなんでしょうか? INSERT INTO list (id, name, address, age) SELECT 999, 'the name', 'the address', 20 FROM list WHERE having max(data) < 60

nyandafull
質問者

補足

$sql = "SELECT id, name, address, age FROM list WHERE age < 60"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $data1 = $HTTP_POST_VARS["inpdata1"]; $data2 = $HTTP_POST_VARS["inpdata2"]; $data3 = $HTTP_POST_VARS["inpdata3"]; $sql = "INSERT INTO `list` (`name`, `address`, `age`) VALUES ('$data1','$data2','$data3')"; mysql_query($sql, $conn) or die("データ追加エラー"); でエラーがでるということです。WHERE age < 60をORDER BY idなどにするとエラーはでないのですが、同じページ内で、60歳以下の人を表示したいので、WHERE age < 60を使っています。

  • duron
  • ベストアンサー率77% (73/94)
回答No.1

INSERTでWHEREが必要という意味がよくわかりません。 まだ存在しないレコードの特定のカラムの値を条件にするなんてできっこないのではないでしょうか? 画面の入力値等からレコードを追加するならsqlを投げる前に入力値チェックではじいてください。

nyandafull
質問者

補足

$sql = "SELECT id, name, address, age FROM list WHERE age < 60"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $data1 = $HTTP_POST_VARS["inpdata1"]; $data2 = $HTTP_POST_VARS["inpdata2"]; $data3 = $HTTP_POST_VARS["inpdata3"]; $sql = "INSERT INTO `list` (`name`, `address`, `age`) VALUES ('$data1','$data2','$data3')"; mysql_query($sql, $conn) or die("データ追加エラー"); でエラーがでるということです。WHERE age < 60をORDER BY idなどにするとエラーはでないのですが、同じページ内で、60歳以下の人を表示したいので、WHERE age < 60を使っています。

関連するQ&A