こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

緊急です。insert文が実行されない

フォームで入力された値をINSERT文でMYSQLへ保存しようとしているのですが、
以下のように記述して実行し、phpmyadminでテーブルを確認しても
データが入力されておらず空のテーブルとなっています

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
<?php

$SCR = $_POST['junni'];

$Name = $_POST['namae'];

$Day = $_POST['hiduke'];


$conn =
mysql_connect($url,$user,$pass);

$sdb =
mysql_select_db($db,$conn);

$sql = "insert into `seiseki`(`name`,`day`,`score`)values('$Name','$Day','$SCR')";

$res = mysql_query($sql,$sdb,$conn);

mysql_free_result($res);

mysql_close($conn);

?>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
補足として、

実行後、
Warning: mysql_query() expects at most 2 parameters, 3 given in 「phpの場所とファイル名」 on line 26

Warning: mysql_free_result() expects parameter 1 to be resource, null given in 「phpの場所とファイル名」 on line 28

という表示がされます

また、$conn =のあとに
print ($Day");
print ($Name");
などを入れると値は表示されているため、受け渡しは問題ないかと思います

また、$url,$user,$pass,$dbは、$SCR = $_POST['junni'];以前に
$url = "localhost";というような形で代入しており、入力ミスなどは何度も確認しましたがありません

知識がほとんどありませんので、説明足らずかもしれませんが、
文法、入力間違いや解決策がありましたらよろしくお願いいたします

投稿日時 - 2011-01-09 23:57:43

QNo.6436936

すぐに回答ほしいです

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

 知識うんぬんはともかくとして、エラーメッセージが出ているのですからそれを読んでみてはいかがでしょうか。

> 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

投稿日時 - 2011-01-10 00:41:43

お礼

ありがとうございました^^
英語がほぼわからずエラーの意味が訳せませんでした^^;

$res = mysql_query($sql,$sdb,$conn);
の部分を
$res = mysql_query($sql);
と改変し、無事入力することができました

また、mysql_free_result() は、お書きになった通りこの場合不必要なものでした
ご指摘ありがとうございます

投稿日時 - 2011-01-10 01:07:53

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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

投稿日時 - 2011-01-10 00:46:04

お礼

ご指摘ありがとうございました^^
お書きになっている通り英語がほぼわからずエラーの意味が訳せませんでした^^;

$res = mysql_query($sql,$sdb,$conn);
の部分を
$res = mysql_query($sql);
と改変し、無事入力することができました

緊急で作成しているため基本を学習している時間がなく、
サンプルや本を参考にコードをつなげているだけの状態です;;
ご迷惑をおかけし、申し訳ありませんでした

投稿日時 - 2011-01-10 01:11:37

ANo.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);

↑ ここが違うんじゃないかと思うのですが…。

投稿日時 - 2011-01-10 00:39:49

お礼

ありがとうございました^^
英語がほぼわからずエラーの意味が訳せませんでした

$res = mysql_query($sql,$sdb,$conn);
の部分を
$res = mysql_query($sql);
と改変し、無事入力することができました

投稿日時 - 2011-01-10 01:04:32

あなたにオススメの質問