- ベストアンサー
PHPでのINSERT文実行エラーとデータが保存されない問題の解決策
- PHPでフォームで入力された値をINSERT文でMYSQLへ保存する際に、実行エラーが発生し、データが保存されない状況が発生しています。
- 具体的には、mysql_query()関数とmysql_free_result()関数の引数のエラーが発生しています。
- この問題を解決するためには、mysql_connect()関数の代わりにmysqli_connect()関数を使用し、mysqli_query()関数とmysqli_free_result()関数を使用する必要があります。また、エスケープ処理も行うことが重要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
知識うんぬんはともかくとして、エラーメッセージが出ているのですからそれを読んでみてはいかがでしょうか。 > 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.php → http://jp2.php.net/manual/ja/function.mysql-free-result.php
その他の回答 (2)
- pringlez
- ベストアンサー率36% (598/1630)
もしかすると英語はまったくダメな感じでしょうか? 私は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
お礼
ご指摘ありがとうございました^^ お書きになっている通り英語がほぼわからずエラーの意味が訳せませんでした^^; $res = mysql_query($sql,$sdb,$conn); の部分を $res = mysql_query($sql); と改変し、無事入力することができました 緊急で作成しているため基本を学習している時間がなく、 サンプルや本を参考にコードをつなげているだけの状態です;; ご迷惑をおかけし、申し訳ありませんでした
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
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); ↑ ここが違うんじゃないかと思うのですが…。
お礼
ありがとうございました^^ 英語がほぼわからずエラーの意味が訳せませんでした $res = mysql_query($sql,$sdb,$conn); の部分を $res = mysql_query($sql); と改変し、無事入力することができました
お礼
ありがとうございました^^ 英語がほぼわからずエラーの意味が訳せませんでした^^; $res = mysql_query($sql,$sdb,$conn); の部分を $res = mysql_query($sql); と改変し、無事入力することができました また、mysql_free_result() は、お書きになった通りこの場合不必要なものでした ご指摘ありがとうございます