フォームからmySQL-DBにデータ登録したいです

このQ&Aのポイント
  • 質問者は、FedoraCore6 + Apache2.2.4 + MySQL5.0.41 + PHP4.4.7を使用して、フォームからmySQL-DBにデータを登録したいです。
  • 具体的には、'aaa'という名前のテーブルを作成し、入力フォームを作成してデータを登録しようとしています。
  • しかし、現在のコードでは書き込みができない状況であり、原因を特定することができません。質問者は、どこが間違っているのかを知りたいとしています。
回答を見る
  • ベストアンサー

フォームからmySQL-DBにデータ登録したいです。

FedoraCore6 + Apache2.2.4 + MySQL5.0.41 + PHP4.4.7 で学習しています。 TABLE aaa( id MEDIUMINT NOT NULL AUTO_INCREMENT, hiduke DATE, xyz INT, comment VARCHAR(30), PRIMARY KEY (id) );  という表を作り、 入力フォーム [TEST.html] <html><head><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"></head> <body><p>データ入力</p> <form action="datatest.php" method="POST"> <p>日付<input type="text" name="hiduke" size="12"></p> <p>データ<input type="text" name="xyz" size="6"></p> <p>コメント<input type="text" name="comment" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form></body></html> ------------------ 書込スクリプト [datatest.php] <html><body> <php extract($_POST); mysql_connect(localhost,bbbbbb,******); mysql_select_db(cccccc); $sql = "insert into aaa values(0 '$hiduke','$xyz','$comment')"; mysql_query($sql); ?> 下記の内容で登録しました<p> 日付:<? echo $hiduke; ?> <br> データ:<? echo $xyz; ?> <br> コメント:<? echo $comment; ?> <br> <p></body></html> でデータを登録しようとしましたが書き込みができません。何が悪いのでしょうか? 基本的なところが間違っていると思い、いろいろ調べましたが、私の現在の力では原因を見つけることができないでいまず。よろしくご指導下さい。 なお、コマンドラインから、insert into aaa values(0, 20071008,3840,'qqqqq'); なら書込みできます。

  • MySQL
  • 回答数1
  • ありがとう数1

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

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

とりあえず values(0 の後ろにカンマが抜けてますね。 普通は以下の様に書いてデバッグします mysql_query($sql) or die(mysql_error().$sql."<br>");

spindle
質問者

お礼

自己レスです。書込スクリプト書き始めが <php となっていました! <?php に修正したら正常に動きました。お恥ずかしいです。 しかし、yambejp様、sqlデバッグの方法を教えていただき、大変参考になりました。Webで検索してもsql文を「printして確認する」「print_rで確認する」などとあって、具体的にどのようにすれば良いか、分からなかったのです。ありがとうございました。 折角ですので、もし宜しければ、「printして確認する」「print_rで確認する」の具体的方法も教えて頂ければ幸いです。もう少し時間を置いて締め切らせて頂こうと思っています。

spindle
質問者

補足

あ、すみません。 values(0 の後ろのカンマは、この質問を書き込むときに書き落としたのです。テスト用は、カンマが入っています。それでもデータが書き込めないのです・・・。

関連するQ&A

  • フォームからMYSQLへの接続

    フォームからの入力で登録ボタンを押して MYSQLへデータの書き込み、そして削除ボタンを押して データを削除するという勉強をしています。 削除の場合は、番号か名前、電話番号のいずれかを入力して 削除ボタンを押せば該当するデータが削除されるようにしたいのですが 番号指定以外の名前指定や電話番号指定での削除ができません。 「DELETE FROM address where no=$no or name='$name' or tel='$tel'」の 書き方に問題があるようですが どのようにしたらよいのでしょうか? ---------------------------------------------- <html> <body> <form action="" method="post"> 番号:<br><input type="text" name="no"><br> 氏名:<br><input type="text" name="name"><br> 電話番号:<br><input type="text" name="tel"><br><br> <input type="submit" value="登録" name="submit"> <input type="submit" value="削除" name="submit"> </form> <?php error_reporting(1); $con = mysql_connect("127.0.0.1", "root", ""); if(!$con){ exit("データベースに接続できませんでした。"); } $result = mysql_select_db("test", $con); if(!$result){ exit("データベースを選択できませんでした。"); } $no = $_POST["no"]; $name = $_POST["name"]; $tel = $_POST["tel"]; $submit = $_POST["submit"]; if($no != null){ if($submit == "登録"){ $result = mysql_query("INSERT INTO address(no, name, tel) VALUES ('$no', '$name', '$tel')", $con); if($result){ echo "<p>登録が完了しました。<br>"; }else{ echo "<p>登録失敗</p>"; } }elseif($submit == "削除"){ $result = mysql_query("DELETE FROM address where no=$no or name='$name' or tel='$tel'", $con); if($result){ echo "<p>削除が完了しました。<br>"; }else{ echo "<p>削除失敗</p>"; } } } ?> </body> </html> ---------------------------------------------- あと「header("Location: {$_SERVER['PHP_SELF']}");」を使って 2重投稿を回避したいのですが 書く場所により「登録が完了しました。」「削除が完了しました。」の メッセージが表示されなくなってしまいます。 どこに記入したらよいのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォームからMySQLにデータが書き込めません。

    CentOS5.3 + php5.1.6 + MySQLServer version: 5.0.77の環境です。 下記のスクリプトを書きましたが、点数を書いてsubmitすると、「登録できませんでした」が表示され、データの書き込みができません。 var_dump($sql); で$sqlの内容も表示されますし、echo($conn) も Resource id #2が返ります。 .MYD, .MYI,.frm のパーミッションは777です。 どこが不具合の原因でしょうか? データを登録するためには、どのように修正すれば良いでしょうか? ご教示願えれば幸甚です。 [tensuform.php] <HTML><BODY> <H1 ALIGN="CENTER">点数</H1> <TABLE BORDER="1" ALIGN="CENTER" CELLSPACING="0"> <FORM action="tensuinst.php" METHOD ="POST"> <TR><TD BGCOLOR="#CCCCCC">点数</TD> <TD><INPUT TYPE="TEXT" NAME="tensu" value="" maxlength="3"></TD></TR> <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=" 書 込 "> <INPUT TYPE="RESET" VALUE=" ク リ ア "></TD> </TR></TABLE></FORM></BODY></HTML> [ tensuinst.php] <HTML><BODY> <?php $tensu=$_POST['tensu']; print $tensu."<br/>"; if($tensu ==" "){ echo ("点数が書き込まれていません。"); ?> <a href="tensupoform.php">"こちらからデータを書き込んで下さい。"</a><BR> </BODY></HTML>); <?php exit(); }elseif(!$conn = mysql_connect('localhost', "abcd", "efgh")){ die("データベース接続エラー.<br />"); }else{ mysql_select_db("wxyz", $conn); $sql = "INSERT INTO kokugo('tensu') VALUES('$tensu')"; // var_dump($sql); echo("<br>"); // echo($conn)."<br>"; mysql_query($sql, $conn) or die("登録できませんでした" ); mysql_close($conn); print("登録しました。"); } ?>

    • ベストアンサー
    • MySQL
  • フォームの値をまとめて取得する関数

    以下のようなフォームから値を取得するときに、(2)のような関数化したいと思っていますが、思うように取得できません。どこが問題かアドバイスください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=sjis" /> <title>sample</title> </head> <body> <form action="" method="post"> 名前:<br /> <input type="text" name="name" size="30" value="" /><br /> コメント:<br /> <textarea name="comment" cols="30" rows="5"></textarea><br /> <br /> <input type="submit" value="登録する" /> </form> </body> </html> (1)問題なく表示できる <?php  foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {   ${$k}=$v;  } echo "名前:$name<br>"; echo "コメント:$comment<br>"; ?> (2)表示できない? <?php function Request() {  foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {   ${$k}=$v;  } } Request(); echo "名前:$name<br>"; echo "コメント:$comment<br>"; ?>

    • 締切済み
    • PHP
  • フォーム情報をDBに追加できない

    はじめまして。 初心者で現在参考書を使ってMYSQL、PHP、HTMLを学習してるんですが フォームの情報をデータベースに格納できません。 (ken1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県別人口面積その1</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql= "select * from todofuken"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kenmei"]; echo " "; echo $row["kencho"]; echo " "; echo $row["jinko"]; echo " "; echo $row["menseki"]; echo "</p>"; } } ?> </body> </html> (ken2.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>フォーム文</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <p>データを入力してください</p> <form action="ken3.php" method="post" > <p>県   名<input type="text" name="ken" size="40"></p> <p>県庁所在地<input type="text" name="kec" size="40"></p> <p>人   口<input type="text" name="jin" size="40"></p> <p>面   積<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html> (ken3.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>ここにページのタイトルが入る</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php error_reporting(E_ALL & ~E_NOTICE); extract($_POST); mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men, 0)"; mysql_query($sql); ?> </body> </html> ブラウザでken2.htmlのフォームにデータを埋め込み、そのデータを DBに追加したいんです。 問題はken2.htmlの登録ボタンを押してken3.php に移動するまでは良いんですが DBにデータが追加されません。 構文は参考書どうりにやっているので間違いないと思うのですが 原因がわかる方どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • phpでmysqlに接続してデータを登録

    入力フォームをhtmlに作って それをidとpassを入力して それをmysqlに登録したいのですが うまくできません <html> <head> <meta http-equiv="Content-Type"content="text/html;charset="utf-8"/> <title>登録</title> </head> <body> <form action="touroku.php"method="post"> 登録id :<br /> <input type="text"name="id"size="10"value="" /><br /> パス:<br /> <input type="text"name="pass"size="10"value="" /><br /> <br /> <input type="submit"value="登録する" /> </form> </body> </html> という感じに 入力フォームは作ったのですが それからそれをmysqlにどうやって登録をするのかわかりません 詳しく解説されてわかりやすいサイトなどを教えてください もしくは教えてください

  • フォームデータをデータベースに追加したい

    はじめまして。 初心者で参考書を使ってPHP、MYSQLを学習してるんですが フォームに入力したデータをデータベースに追加するとこが 参考書どうりにやってるんですができません。 どうかお力を貸してください。 (ken1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県別人口面積その1</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql= "select * from todofuken"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kenmei"]; echo " "; echo $row["kencho"]; echo " "; echo $row["jinko"]; echo " "; echo $row["menseki"]; echo "</p>"; } } ?> </body> </html> (ken2.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>フォーム文</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <p>データを入力してください</p> <form action="ken3.php" method="post" > <p>県   名<input type="text" name="ken" size="40"></p> <p>県庁所在地<input type="text" name="kec" size="40"></p> <p>人   口<input type="text" name="jin" size="40"></p> <p>面   積<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html> (ken3.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>ここにページのタイトルが入る</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php extract($_POST); mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men, 0)"; mysql_query($sql); ?> </body> </html> ken2.htmlで入力したデータをデータベースに追加したいのですが ブラウザ上で登録ボタンを押してken3.phpに移動するまでうまくいっています。 参考書ではこの操作で入力したデータがデータベースに追加されると書いているのですが データベースを見ても追加されていません。 原因をいろいろ調べたのですが不明なのでお力添えお願いします。

    • 締切済み
    • PHP
  • mysql データ登録

    phpにてmysqlにデータ登録の流れを作っているのですが、わからないことがあり投稿しました。 簡単に流れを説明しますと mysqlのテーブル(テーブル名member)の構成は id | name だとして phpのフォームで <input type="text" name="name1" value=""> <input type="text" name="name2" value=""> <input type="text" name="name3" value=""> というものを作っています。 ここでフォームのname1、name2、name3をそれぞれ入力したときにmysqlに登録されるのですが、 mysqlのなかに id | name 1 | A 2 | B 3 | C としたいのですが、下記の記述ではできません。 (INSERT INTO `member` SET `name`='$name1',`name`='$name2',`name`='$name3') エラー文はColumn 'name' specified twiceと表示されます。 レコード数は増やしたくないので、何か方法が御座いましたら教えていただけないでしょうか? まだ、PHPを勉強し始めたばかりで困っています。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQLでGETで2件同じものが登録されてしまいます

    PHP、MySQLとも初心者で、お世話になっています。 <form name="~" method="GET" action="~.php"> 入力1<input type="text" name="na1"><br> 入力2<input type="text" name="na2"><br> <input type="submit" value="送信"> </form> で送信し、PHP側で $tem1=$_GET["na1"]; $tem2=$_GET["na2"]; mysql_select_db("~"); mysql_query("insert into tb1 values (\"$tem1\",\"$tem2\")"); とすると、結果的に同じデータが2件登録されてしまいます。 何が問題なのでしょうか。 教えていただけるとありがたいのですが。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォームデータの受取り方

    お世話になっております。フォームデータの受取り方が判らず質問させて下さい。 少々長いのですが、以下はPHPで作ったファイルです。 (IDは重なってはならないと考え、変数で番号を与えて回避しています) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="EUC-JP" /> <title></title> <script type="text/javascript" src="/jquery/js/jquery.min.js"></script> </head> <body> <script> $(document).ready(function(){ $('#send1').click(function(){ var data = {comment : $('#comment1').val()}; $.ajax({ type: "POST", url: "send.php", data: data, success: function(data, dataType){ }, error: function(XMLHttpRequest, textStatus, errorThrown){ alert('Error : ' + errorThrown); } }); return false; }); }); </script> <form method="post"> <INPUT type="hidden" name="comment_no" id="comment_no" value="1"><p><textarea name="comment1" id="comment1" style="width:400px; height:20px; padding:6px 5px; font-size:13px; overflow:hidden; vertical-align:text-bottom;" onkeyup="resize(this)"></textarea></p> <p><input id="send1" value="送信1" type="submit" /></p> </form> <hr> <script> $(document).ready(function(){ $('#send2').click(function(){ var data = {comment : $('#comment2').val()}; $.ajax({ type: "POST", url: "send.php", data: data, success: function(data, dataType){ }, error: function(XMLHttpRequest, textStatus, errorThrown){ alert('Error : ' + errorThrown); } }); return false; }); }); </script> <form method="post"> <INPUT type="hidden" name="comment_no" id="comment_no2" value="2"><p><textarea name="comment2" id="comment2" style="width:400px; height:20px; padding:6px 5px; font-size:13px; overflow:hidden; vertical-align:text-bottom;" onkeyup="resize(this)"></textarea></p> <p><input id="send2" value="送信2" type="submit" /></p> </form> </body> </html> ここで質問させて下さい。 上記フォームデータの受取り先である、send.phpは $comment = $_POST['comment']; としてテキストフォームの値を拾っているのですが、 hidden データの comment_no は、どのように値を拾ったらよろしいのでしょうか? 前回の質問同様、AJAXを触り初めて間もなく、googleで調べようにも適切なキーワードが判らずにいる次第です。 お忙しいなか恐縮ですが、アドバイスのほど頂戴出来たら幸いです。 宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • PHPでMySQLにデーターを追加するところで壁に当たってしまいました

    PHPでMySQLにデーターを追加するところで壁に当たってしまいました。 PHP5.3&MYSQL5.1 1.フォームへ入力 2.確認画面 3.MySQLへデーター追加 1.form <html> <head><title></title></head> <body> <form method="post" action="conf.php"> <table> <tr><th>番号</th><td><input type="text" name="id" /></td></tr> <tr><th>タイトル</th><td><input type="text" name="title" /></td></tr> <tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr> <tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr> </table> <input type="submit" value="送信" /><input type="reset" value="リセット" /> </form> </body> </html> 2.確認画面 <html> <head><title></title></head> <body> <table> <tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr> <tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr> <tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr> <tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr> </table> <form method="post" action="upld.php"> <input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" /> <input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" /> <input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" /> <input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" /> <input type="submit" value="登録" /> </form> </body> </html> 3.MySQLへデーター追加 <?php $Con = mysql_connect("localhost","root",""); if ($Con == false) {dir ("MySQLの接続に失敗。");} if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");} $sql = "insert into daimoku(id,title,cont,update) values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($Con);//切断 ?> <html> <head> <title></title> </head> <body> <p>ご登録ありがとうございました。</p> <a href="01.php">戻る</a> </body> 以上のコードでデーターの追加が出来ません。 どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP