INSERTした時のデータベース等の表示がおかしい

このQ&Aのポイント
  • 商品名や値段が表示されない問題が発生しています。入力フォームからのデータ受け渡しやINSERT文に誤りがある可能性が考えられます。
  • 現在、phpmyadminを使用して、商品登録フォームに商品名と値段を入力していますが、登録後の表示が正しく行われません。
  • 質問者のコードを確認したところ、INSERT文でデータを追加しているが商品名と値段が正しく受け渡されていないようです。
回答を見る
  • ベストアンサー

INSERTした時のデータベース等の表示がおかしい

現在phpmyadminを使用して、ファイルを分けた状態で入力フォームで商品名と値段を入力、確認画面(追加登録)の追加登録としたいのですが, 追加登録するファイルでINSERTしデータべースやselect文で表示したIEをみると商品名には何も表示がなく値段にはかならず0が表示されてしまいます。 これは入力フォームからの商品名や値段がうけわたされていないのでしょうか?それとも、INSERT文になにか誤りがあるのでしょうか? //追加登録 $submit = $_POST["submit"]; $item = $_POST["item"]; $price = $_POST["price"]; if($submit == "追加"){ $item = $_POST["item"]; $price = $_POST["price"];      $ITEM = $_POST["ITEM"];     $PRICE = $_POST["PRICE"]; header("Location:shoppingformCompletion.php"); if($contact=mysql_connect("host","admin","root")){ echo "<center><strong>商品登録をしました。</strong></center><br>"; mysql_select_db("watanabe", $contact); $query = "INSERT INTO shoppingtable (item, price) VALUES (\"$item\",\"$price\")"; $query2 = 'SET NAMES sjis'; mysql_query( $query2 ); } } <form method="post" action="shoppingformConfirmation.php" > <center><p><input type="submit" name="submit" value= "追加"></p></center> <center><input type="submit" name="delete" value="削除"></center> </form>'; //ここまで

  • msnxl
  • お礼率81% (36/44)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

>データべースやselect文で表示したIE の部分がわからないのですが IEでphpmyadminを使ってデータべースへselect文を実行したということでしょうか。 商品名が空で値段が0ということは他のカラム(フィールド)には値が入っているのでしょうか。 それでしたらINSERT時に商品名と値段が空だったと考えられます。 header("Location:shoppingformCompletion.php"); を削除して $query = "INSERT INTO shoppingtable (item, price) VALUES (\"$item\",\"$price\")"; echo $query; などで確認されたらどうでしょう

msnxl
質問者

お礼

ご回答ありがとうございました。なんとかクリアすることができました。

msnxl
質問者

補足

php504様のおっしゃる通りheader("Location:shoppingformCompletion.php");を消して確認したところ 「INSERT INTO shoppingtable (item, price) VALUES ("","")string(54) "INSERT INTO shoppingtable (item, price) VALUES ("","")"」 となり、 空になっていました。 また、他のカラム(フィールド)には値が入っています。 データべースやselect文で表示したIEは IEでphpmyadminを使ってデータべースへselect文を実行したということです。 入力フォームのスクリプトは下のものですが、やはり商品名や値段が確認スクリプトの方に受け渡せていないようです。 初歩的なことかもしれませんが、入力フォームから確認のスクリプト(追加登録する画面)まで商品名と値段の受け渡す方法をお教え願えないでしょうか? $submit = $_POST["submit"]; $item = $_POST["item"]; $price = $_POST["price"]; //ショッピング登録フォーム echo ' <form method="post" action="shoppingform.php" > <center><br>商品名:<input type="text" size="30" maxlength="60" name="item"></br></center> <center><br>値段:<input type="text" size="30" maxlength="60" name="price"></br></center> <center><input type="submit" name="submit" value="登録"></center> </form> '; if($submit == "登録"){ $item = $_POST["item"]; $price = $_POST["price"]; header("Location:shoppingformConfirmation.php"); if($_POST["item"] == "" || $_POST["price"] == ""){ header("Location:shoppingformConfirmationfalse.php"); } } if($contact=mysql_connect("host","admin","root")){ echo "<strong>登録済み商品。<br></strong>"; } $query = 'SET NAMES sjis'; mysql_query($query ); mysql_select_db("test", $contact); $query ="SELECT * FROM shoppingtable"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); while($line = mysql_fetch_array($result, MYSQL_ASSOC)){ foreach( $line as $key=>$value ){ echo " $value<br>"; } }

関連するQ&A

  • ファイルを分けたデータベースのINSERTができない。

    こんばんわ毎度毎度、質問続きで恐縮です。現在、ファイルをわけて、DBに商品登録をする、というスクリプトを作っています。トップ画面の商品入力フォームから商品登録の確認画面まではいけるのですが、 その、確認画面で登録ができずに悩んでいます。 下のスクリプトは、入力フォームで商品名と値段が入力されたとき 追加ボタンを押し登録をするスクリプトにしようと思い作成しました。 ただ、登録ボタンを押すと、「Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1」という構文誤りのエラーが出てしまうのです。 また、入力フォームからの商品や値段の受け渡しはPOSTでしようと思いました。 ご回答願えますでしょうか? //商品登録部分 $submit = $_POST["submit"]; $_item = $_POST["item"]; $price = $_POST["price"]; if($submit == "追加"){ $item = $_POST["item"]; $price = $_POST["price"]; if($contact=mysql_connect("host","admin","root")){ echo "<center><strong>商品登録表示</strong></center><br>"; mysql_select_db("test", $contact); $query = "INSERT INTO shoppingtable (item, price) VALUES ('".$item."',".$price.")"; $query2 = 'SET NAMES sjis'; mysql_query( $query2 ); $result = mysql_query($query) or die('Query failed: ' . mysql_error()); } if($submit){ header("Location:shoppingformCompletion.php"); } } //ここまで

    • ベストアンサー
    • PHP
  • 入力フォームからデータベースにINSERTできない。

    こんにちわ。今までSQL文で直接DBに商品名や価格などを登録していたのですが、今度は入力フォームから商品名や価格などを登録しようと思いスクリプトを組んでみたのですが、「Query failed: Column count doesn't match value count at row 1」という エラーが出てしまい悩んでいます。 <html> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <body> <?php $item = $_POST["item"]; $price = $_POST["price"]; $submit = $_POST["submit"]; //ショッピング登録フォーム echo ' <form method="post" action="shoppingform.php" > <center><br>商品名:<input type="text" size="30" maxlength="60" name="item"></br></center> <center><br>値段:<input type="text" size="30" maxlength="60" name="price"></br></center> <center><input type="submit" name="submit" value="登録"></center> </form> '; if($submit == "登録"){ $item = $_POST["item"]; $price = $_POST["price"]; if($contact=mysql_connect("host","admin","root")){ echo "サーバに接続ができました。<br>"; mysql_select_db("test", $contact); $query = 'INSERT INTO shoppingtable VALUES($item,$price)'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); } お力をお貸し願えないでしょうか?

    • ベストアンサー
    • PHP
  • データベースと一致したときの表示

    こんにちわ。今、データベースにある商品を物理削除するとき、データべースに登録してある商品名と一致しない場合に「一致する商品名がありません」と表示ができるようにしたいのが、なにか良いSQL文などはないでしょうか?例えば「なし」という入力をしたとき「なし」が登録されていないので「削除できませんでした」、というようにしたいと考えています。 //削除フォーム確認画面 <?php $submit = $_POST["submit"]; $delete = $_POST["delete"]; $item = $_POST["item"]; $price = $_POST["price"]; if($submit == "削除"){ $item = $_POST["item"]; $delete = $_POST["delete"]; }elseif($_POST["item"] == "" ){ header("Location:shoppingformConfirmationdeletefalse.php"); //ここから }elseif(if($contact=mysql_connect("localhost","root","")) { $query = 'SET NAMES sjis'; mysql_query($query ); mysql_select_db("watanabe", $contact); $query ="SELECT item, if(instr(item,\"$item\") > 0, '入力された商品名に一致する対象がない為、削除できません') FROM shoppingtable"; $result = mysql_query($query) or die('Query failed: ' . mysql_error());{ { } } //ここまで ?> とやってみたのですが、うまくきませんでした。 もしくは、この画面で削除する登録商品がない場合、ヘッダーなどで 遷移し 「一致する商品がないので削除できませんでした」というような感じ にしようかとも考えています。

    • ベストアンサー
    • PHP
  • MySQL insertができない

    商品名とその値段を挿入しようとおもっているのですが、下記のようなエラーがでて先に進めずにいます。 Query failed: Unknown column 'item' in 'field list' <?php if($contact=mysql_connect("host","admin","root")){ echo "サーバに接続しました。<br>"; } mysql_select_db("watanabe", $contact); $query = 'INSERT INTO list(item,price) VALUES("りんご","100")'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); if($result){ echo"追加に成功しました。"; }else{ echo"追加に失敗しました。"; } ?> ご回答願えますでしょうか?

    • ベストアンサー
    • PHP
  • phpからinsertできない

    またお世話になります。 PHPからMySQLへデータをインサートしたいのですが、各サイトを参考にしながら試しているのですがどうにも上手くいきません。 ソースを見ていただけますでしょうか? $con = mysql_connect("localhost","user","password") or die("MySQLに接続できません。"); mysql_select_db('test'); $sql = "SET CHARACTER SET UTF8"; $result = mysql_query($sql); $data1 = $HTTP_POST_VARS["inpdata1"]; $data2 = $HTTP_POST_VARS["inpdata2"]; $data3 = $HTTP_POST_VARS["inpdata3"]; $sql = 'INSERT INTO `tab1` (`abc`, `def`, `ghi`) VALUES (`$data1`,`$data2`,`$data3`);'; $result = mysql_query($sql); print $data1; //ここでは通常にデータが表示されるので print $data2; //データの受け渡しは問題ないはずですが。 print $data3; mysql_free_result($result); mysql_close($con);

    • ベストアンサー
    • MySQL
  • insertがうまくいかない

    PHP5+MYSQLの環境で $sql_str = "INSERT INTO bbs(userid,toukouid,groupid,title,memo) VALUES('$name','$toukouid','$group','$title','$memo')"; mysql_query($sql_str, $con_id); を実行しますが、登録ができません。 mysql_queryの結果がfalseです・・・。 ちなみに変数は全て1が代入しています。 悪いところあれば指摘お願いいたします。 また、他の情報が必要であればもうしつけください。

    • 締切済み
    • PHP
  • 改行されても空白がずれてしまいます

    カテゴリがMYSQLかもしれません。その場合はご指摘お願いします。 phpとmysqlと使って掲示板のような機能を作っています。 TEXTAREAフォームに改行して文字列を入力し、DBにINSERTで追加します。 表示させるときにSELECTして、nl2br( )を使っています。 表示の際、改行は実行されるのですが  空白(スペース)がTEXTAREAフォーム入力したときと違うように表示されます。 たとえばTEXTAREAフォームでは 本日  10:00~14:00      17:00~23:00 と入力したのにecho で表示させると 本日  10:00~14:00 17:00~23:00 というように改行した行の空白がずれてしまいます。 DBにINSERTするとき、DBから取り出すとき、取り出して表示させたとき、 どの段階でずれるという問題が起きているのでしょうか。 また、どういった対処をすればよろしいでしょうか。 どうかご教授お願いします。 以下がソースコードの一部です。 //入力して追加する部分 <FORM method="POST" action="test1.php"> <TEXTAREA NAME="test1" COLS="60" ROWS="7"></TEXTAREA> <INPUT type="submit" name="submit" value="追加"> で入力し送信して,POSTメソッドで受け取り $add_text = $_POST["test1"]; mysql_query("insert into `test`(`text`) VALUES('$add_text')"); 「test」というテーブルに追加しています。 //表示する部分 $result = mysql_query("select * from test"); $rows = mysql_num_rows($result); if($rows == 0){ } else{ while($row=mysql_fetch_array($result)){ echo nl2br($row['text']); }

    • ベストアンサー
    • PHP
  • MySQLのINSERT文で変数展開ができません

    はじめまして。 MySQL+PHP初心者なのですが、INSERT文中での変数展開がうまくいきません。 フォームから受け取ったデータを単純にレコードに追加するだけなのですが、 mysql_query('insert into area_tbl (area)values($area)'); areaのデータ型はテキストで、$areaをクォーテーションで囲めば当然のごとくそのまま表示されてしまいますし、事前に $area = $_POST['area'] の処理をしてもダメです。直後に echo "$area" をするとフォームに入力した文字列が表示されるので、データの受け渡しはうまくいっていると思います。また ($area) の代わりに'あいうえお'といれると【あいうえお】とデータベースに反映されるので、MySQLとPHPの日本語対応の問題もないと思います。なぜでしょうか? ご指導のほどよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • phpでデーターベース編集

    phpを独学し始めた初心者です。 よろしくお願いします。 以下のphpファイルを実行すると エラーが出ないにもかかわらず、 データーベースの表示で確認すると 『item_name』に『もも』という文字が入っていません。 その他はphp通りデーターが挿入されます。 なぜでしょうか? (環境)------------------------------------- phpエディターでphpファイルをつくり phpMyAdminでデーターベースを編集してます。 ローカルホストです。 --------------------------------------------- <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('mydb') or die(mysql_error()); mysql_query('SET NAMES UTF8'); mysql_query ('INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"') or die(mysql_error()); echo 'データー挿入完了'; ?> どうぞよろしくお願いします。

  • mysqlのinsert文について、ご指導をお願いいたします。

    はじめまして。 プログラミング初心者です。 現在、PHP&MySQLで会員制掲示板を制作しようと奮闘しております。 会員登録フォームを作成し、下記SQL文にて会員登録を行おうとしているのですが、「エラーは出ていないのに、DBにデータが登録されない。」状況で、なにがおかしいのかわからず非常に困っております。尚、DBには正常に接続されています。 環境はVISTAにXAMPPを入れております。 私、PHP初心者のため、本のサンプルソースを加工して使用しようとしています。 下記にソースを記載いたしますので、 どうかご指導のほどお願いいたします。 (※情報が不足しておりましたら申し訳ありません。必要な情報をお教えいただけましたら幸いです。) // 接続 $link = mysql_connect( $db_host, $db_user, $db_password ); mysql_select_db( $db_name ); $result = mysql_query( 'set character set utf8' ); $sql = "select email1 from users where email = '" . mysql_real_escape_string( $_POST['email'] ) . "'"; $result = mysql_query( $sql ); // if ( $error != '' ) exit; // 会員データの挿入 $sql = "insert into member ( login_id, passwd, register_date, nickname, sex, birthday, email, pref, division, state ) values ( '" . mysql_real_escape_string( $_POST['email'] ) . "', '" . md5( $_POST['passwd'] ) . "', '" . date( 'Y-m-d H:i:s' ) . "', '" . mysql_real_escape_string( $_POST['nickname'] ) . "', '" . mysql_real_escape_string( $_POST['sex'] ) . "', '" . mysql_real_escape_string( $_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day'] . ' 00:00:00' ) . "', '" . mysql_real_escape_string( $_POST['email'] ) . "', '" . mysql_real_escape_string( $_POST['pref'] ) . "', '" . mysql_real_escape_string( $_POST['division'] ) . "', '1' )"; $result = mysql_query( $sql ); //echo $sql; // $title = '会員登録[3/4]'; ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう