• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:緊急です。insert文が実行されない)

PHPでのINSERT文実行エラーとデータが保存されない問題の解決策

このQ&Aのポイント
  • PHPでフォームで入力された値をINSERT文でMYSQLへ保存する際に、実行エラーが発生し、データが保存されない状況が発生しています。
  • 具体的には、mysql_query()関数とmysql_free_result()関数の引数のエラーが発生しています。
  • この問題を解決するためには、mysql_connect()関数の代わりにmysqli_connect()関数を使用し、mysqli_query()関数とmysqli_free_result()関数を使用する必要があります。また、エスケープ処理も行うことが重要です。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 知識うんぬんはともかくとして、エラーメッセージが出ているのですからそれを読んでみてはいかがでしょうか。 > Warning: mysql_query() expects at most 2 parameters, 3 given in 「phpの場所とファイル名」 on line 26 訳: 警告: mysql_query() は多くとも2つのパラメーターを期待します。3つが渡されています。  mysql_query()のメソッド定義を調べて、正しい呼び出し方をしてあげてください。 → http://jp2.php.net/manual/ja/function.mysql-query.php > Warning: mysql_free_result() expects parameter 1 to be resource, null given in 「phpの場所とファイル名」 on line 28 訳: 警告: mysql_free_result() は第1のパラメーターがresource型である事を期待します。nullが渡されています。  $resがnullだからですね。これは先ほどのmysql_query()が失敗しているからと推測されますが、そもそも$resの破棄はSELECTを行った結果である場合のみなのではないでしょうか。INSERTの時に結果を破棄する事が必要なのか調べてみてください。 → http://jp2.php.net/manual/ja/function.mysql-query.phphttp://jp2.php.net/manual/ja/function.mysql-free-result.php

KITA0620
質問者

お礼

ありがとうございました^^ 英語がほぼわからずエラーの意味が訳せませんでした^^; $res = mysql_query($sql,$sdb,$conn); の部分を $res = mysql_query($sql); と改変し、無事入力することができました また、mysql_free_result() は、お書きになった通りこの場合不必要なものでした ご指摘ありがとうございます

その他の回答 (2)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.3

もしかすると英語はまったくダメな感じでしょうか? 私はPHP知りませんが、言葉を読む限り ・26行目で、最大2個の引数を期待しているが、お前は3個渡した ・28行目で、リソースになる1つのパラメータを期待しているが、お前はnullを渡した といわれてますよ。 最低限の基本的な書き方が分かっていないことも問題だとは思いますが、 せっかくわかりやすいメッセージを出してもらっているのに 言葉を理解していないがために通じない不幸な状態に見えます。 PHP: mysql_query - Manual http://php.net/manual/ja/function.mysql-query.php mysql_query http://manual.xwd.jp/function.mysql-query.html mysql_query:SQLを実行する http://bg.pi-ppi.com/page/n01/000144.html mysql_query - MySQL クエリを送信する http://phpspot.net/php/man/php/function.mysql-query.html

KITA0620
質問者

お礼

ご指摘ありがとうございました^^ お書きになっている通り英語がほぼわからずエラーの意味が訳せませんでした^^; $res = mysql_query($sql,$sdb,$conn); の部分を $res = mysql_query($sql); と改変し、無事入力することができました 緊急で作成しているため基本を学習している時間がなく、 サンプルや本を参考にコードをつなげているだけの状態です;; ご迷惑をおかけし、申し訳ありませんでした

回答No.1

PHP やったことないんですけど >Warning: mysql_query() expects at most 2 parameters, 3 given in 「phpの場所とファイル名」 on line 26 「mysql_query() パラメータは最大2つまでですけど、3つありますよ。」 という意味なんですが、大丈夫なんですか? $res = mysql_query($sql,$sdb,$conn); ↑ ここが違うんじゃないかと思うのですが…。

KITA0620
質問者

お礼

ありがとうございました^^ 英語がほぼわからずエラーの意味が訳せませんでした $res = mysql_query($sql,$sdb,$conn); の部分を $res = mysql_query($sql); と改変し、無事入力することができました

関連するQ&A