• ベストアンサー

phpでmysqlのデータがupdateできません。

仕様Apache2.0 PHP5.1.6 MySQL5.0.27 です。 以下の通りです。どこがだめですか? <FORM method="POST" action="order_regist.php"> <INPUT type="hidden" name="id" value="<?=$id?>"> <INPUT type="hidden" name="order_day" value="<?=$order_day?>"> <INPUT type="hidden" name="order" value="依頼あり"> <INPUT type="submit" value="同意して作業を依頼"> </FORM> 上記を次ページへ送信 以下次ページ /* MySQL DB接続情報の設定 DB名/ユーザー名/パスワード */ define("DB_NAME", "*****"); define("DB_USER", "*****"); define("DB_PASS", "*****"); /* リクエストデータの取得 */ $id = $_REQUEST["id"]; $order_day = $_REQUEST["order_day"]; $order = $_REQUEST["order"]; /* MySQLに接続 */ $link = mysql_connect("localhost", DB_USER, DB_PASS) or die("MySQLとの接続に失敗しました。"); /* 接続データベースを選択 */ mysql_select_db(DB_NAME) or die("データベースとの接続に失敗しました。"); /* クライアントのキャラクタセットを変更 */ mysql_query("SET NAMES ujis") or die( "クエリーの実行に失敗しました" ); /* データを更新するクエリーを設定 */ $query = "UPDATE all_cleaning_user SET order = '" . $order . "', order_day = '" . $order_day . "' WHERE id = " . $id; /* データベースにクエリーを実行 */ mysql_query($query) or die("クエリーを実行できませんでした。"); /* MySQLより切断 */ mysql_close($link); クエリーを実行できませんでしたのエラーが出ます。なぜですか?

  • PHP
  • 回答数5
  • ありがとう数4

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

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

>or die("クエリーを実行できませんでした。"); の箇所を or die(mysql_error()."<br>".$query); に変更してデバッグしてください

amecre
質問者

補足

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 'order = '依頼あり', order_day = '2007年1月1日開始時刻00:00' WHERE id = 101322' at line 1 UPDATE all_cleaning_user SET order = '依頼あり', order_day = '2007年1月1日開始時刻00:00' WHERE id = 101322 になりました。

その他の回答 (4)

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

えーと・・・フィールド名やテーブル名はバッククォーテーション``で くくるというのがMySQLの基本ルールです。 (値はシングルクォーテーション''でくくります) つけないで動くことはありますが確実ではありません。 つけてあれば間違いないので、常に意識してつけてください。 UPDATE all_cleaning_user SET order = '依頼あり', order_day = '2007年1月1日開始時刻00:00' WHERE id = 101322 であれば UPDATE `all_cleaning_user` SET `order` = '依頼あり', `order_day` = '2007年1月1日開始時刻00:00' WHERE `id` = '101322' となります。

amecre
質問者

お礼

勉強になりました。ありがとうございました。

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

あ・・・ orderは予約語なのできちんと`order`としてください。

amecre
質問者

お礼

ありがとうございました。orderを使えないのがわかりました。

amecre
質問者

補足

すいません素人なので、予約語とはなんですか? フィールド名や変数でorderというのは使えないのでしょうか?

回答No.2

データベース、テーブルの構造はどうなっていますか?

amecre
質問者

補足

フィールド フィールドタイプ 照合順序 表示する 空の値(NULL) 基本値 id int(10) UNSIGNED いいえ auto_increment order varchar(255) eucjpms_japanese_ci はい NULL order_day varchar(255) eucjpms_japanese_ci はい NULL

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

(1)発行しているSQL文の内容は正しいですか? mysql_query($query) の直前で、var_dump($query); あたりを使って確認してみてください。 (2)all_cleaning_userテーブルのカラム構成を教えてください。

amecre
質問者

補足

フィールド フィールドタイプ 照合順序 表示する 空の値(NULL) 基本値 id int(10) UNSIGNED いいえ auto_increment order varchar(255) eucjpms_japanese_ci はい NULL order_day varchar(255) eucjpms_japanese_ci はい NULL

関連するQ&A

  • MySQL 5 PHP 5 データの受け渡しについて 困ってます。。

    MySQL 5 PHP 5 データの受け渡しについて 困ってます。。 下記内容で困ってます。機能としては (1)プロダクトテーブルからデータを読み込み表示。 ※プロダクトテーブルには商品データが8件登録されています。 (2)注文ボタンが押されたら受注テーブルにデータをカキコミ。 なんですが。。。 プロダクトテーブルから読み込んだデータを受注テーブルに書き込むと $product_id がいつも8(受注テーブルデータの一番最後の数字) $product_name  同じ $product_price 同じ ・・・ になってしまいます。 whileループしているので変数に代入するのも繰り返されて一番最後のデータが いつも格納されている状態だと思うのですが、この解決策を教えて下さい! 最近始めたばかりで良く理解出来ないので噛み砕いて教えてくれる方お願いします>< <?php //---------------------------------------- // □:テーブルからデータを読む //---------------------------------------- $mysql->query("SELECT * FROM products ORDER BY product_id") or die(mysql_error()); while($row = $mysql->fetch()){ $product_id = $row["product_id"]; $product_name = $row["product_name"]; $product_price = $row["product_price"]; echo <<<EOT <tr> <td align="center">$product_id<input name="product_id" type="hidden" value="$product_id" size="10" /></td> <td align="center">$product_name<input name="product_name[$product_id]" type="hidden" value="$new_product_name" size="10" /></td> <td align="right">$product_price<input name="product_price[$product_id]" type="hidden" value="$new_product_price" size="10" /></td> <td><input name="new_use_date[$product_id]" type="text" value="$new_use_date" size="20" /></td> <td><input name="new_use_time[$product_id]" type="text" value="$new_use_time" size="20" /></td> <td><input name="remarks[$product_id]" type="text" value="$new_remarks" size="40" /></td> <td><input name="submit_add" type="submit" value="注文する" /></td> </tr> EOT; } //ここまでwhileループ[終了の閉じカッコ] ?>

    • ベストアンサー
    • MySQL
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • PHP MySQL で updateができません

    はじめまして。Amazon.co.jpなどでよくある 「このレビューは参考になりましたか?」 Yes/No でレビューに対する評価機能をPHPで組みたいのですが、 update set でうまくデータ更新ができず困っております。 以下ソース 【入力画面】 ----------------------------------------------------------- <? while ( $adp = mysql_fetch_array( $result6 ) ) { ?> <form name="register" action="rev.php" method="post"> //レビュー内容 <?php $str = nl2br($adp['description']); echo $description . $str ; ?> //レビュー内容 このレビューは参考になりましたか? <input type="radio" name="vote" value="2" checked>参考になった<br> <input type="radio" name="vote" value="1">参考にならなかった<br><br> <? echo $adp['add_id'] ?> <input name="add_id" type="hidden" value="<?= $adp['add_id'] ?>"> <input type="submit" value="- 登録 -"> <input type="reset" value="リセット"> </form> <? } ?> 【完了画面】 ----------------------------------------------------------- <? require( '../config.php' ); require( '../lib.php' ); $link = db_connect(); $sql = "update adp set vote = '" . mysql_real_escape_string( $_POST['vote'] ) . "' where add_id = '" . mysql_real_escape_string( $_GET['add_id'] ) . "'"; $result = mysql_query( $sql ); echo mysql_error(); // ?> 投票完了 ----------------------------------------------------------- 要するに adpのデータベースのadd_idが同じテーブルの中の voteの値を1か2に更新したいだけなのですが、 1人で色々と試してもどうしても更新できずに 困っております。 どなたかお分かりの方がいらっしゃいましたら是非 お教えいただけますと幸いです。 足りない情報などございましたらご連絡ください。 補足させていただきます。 すみません、どうかお願いします。

    • ベストアンサー
    • PHP
  • MySqlに登録したデータを更新すると文字化けする

    PHP5.2 MySql5.1.34 文字コードSJIS MySqlに登録したデータを更新すると文字化けします。 回答をよろしくお願い致します。 // MySQLのクライアントの文字コードをsjisに設定 mysql_query("SET NAMES 'sjis'") or die("can not SET NAMES sjis"); // データを取り出す $sql = "SELECT created_at, mes, url FROM message WHERE (id = ".$_POST["id"].");"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); // 取り出したデータを表示する print "<form action=koushin.php method=post accept-charset=\"Shift_JIS\">"; print "日付:<input type=text size=30 name=created_at value=" . $row["created_at"] . "> "; print("<br>"); print("<br>"); print "メッセージ:<input type=text size=50 name=mes value=" . $row["mes"] . "> "; print("<br>"); print("<br>"); print "URL:<input type=text size=80 name=url value=" . $row["url"] . "> "; print "<input type=hidden name=id value=" .$_POST["id"]. ">"; print("<br>"); print("<br>"); print "<input type=submit value=更新>"; print("<br>"); print("<br>"); print "</form>"; koushin.php <?php $sv = "サーバ"; $dbname = "データベース"; $user = "ユーザー"; $pass = "パスワード"; $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); $id = $_POST["id"]; $created_at = $_POST["created_at"]; $mes = $_POST["mes"]; $url = $_POST["url"]; $sql = "UPDATE message SET updated_at = now() , created_at = '{$created_at}' , mes = '{$mes}' , url = '{$url}' WHERE id = $id"; $res = mysql_query($sql, $conn) or die("更新エラー"); mysql_close($conn); ?>

    • ベストアンサー
    • MySQL
  • 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
  • PHP+MySQLで文字化けします

    PHPでMySQLに接続して以下のように テーブルの作成・そのテーブルにInsertをすると文字化けします。 PHPサーバーの文字コードはEUC-JP、MySQLの文字コードはlatin1です。 PHPのバージョンは5.04でMySQLのバージョンは4.1.20です。 無料レンタルサーバーなので詳細な設定は変更できません。 <?php // データベースに接続し、選択する mb_language('Japanese'); mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); $link = mysql_connect('localhost',"user","password") or die('Could not connect: ' . mysql_error()); echo 'Connected successfully'; mysql_select_db('user') or die('Could not select database'); mysql_query("SET NAMES UTF-8",$link); // SQL クエリを実行する $name = 'test'; $query = "CREATE TABLE IF NOT EXISTS `$name` ( `id` varchar(50) primary key, `name` varchar(50), `pw` varchar(50) );"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); $query = "INSERT INTO $name (id, name) VALUES('test', 'テスト');"; $mojicode = mb_detect_encoding($query); $query = mb_convert_encoding($query, "UTF-8", "$mojicode"); $result = mysql_query($query) or die('Query failed: ' . mysql_error()); // HTML に結果を出力する echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // 結果セットを開放する mysql_free_result($result); // 接続を閉じる mysql_close($link); ?> まだまだPHP、MySQL共に技術が未熟なため 説明不足な部分が多々あるかと思いますがご教授お願いします。

    • ベストアンサー
    • PHP
  • mySQLでINSERT Errorとなります。

    初心者です。よろしくお願いいたします。 データを入れたいのですが、エラーとなってしまいます。 以下でデータベースとテーブルを作成し、 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } $sql = 'CREATE DATABASE tori'; if (mysql_query($sql, $db)) { echo "データベースtori の作成に成功しました\n"; } else { echo 'データベースtoriの作成に失敗しました: ' . mysql_error() . "\n";} mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $query ="create table {$tbl_name} ( id char(8) primary key, date TEXT, sex TEXT, age TEXT )TYPE=MyISAM"; mysql_query($query); $query ="INSERT INTO `houzingpark`.`hatogaya` ( id , date , sex , iro ) VALUES ( '2', 'uu', 'ii', 'po' )"; mysql_close($db); ?> 以下で入れ込みたいのですが、出来ないのです。 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $sql="INSERT INTO hatogaya ( id , date , sex , iro ) VALUES ( 3, 2005-12-3, mesu, cya )"; mysql_query($sql); if(!$result){print 'INSERT Error!';} echo $sql; mysql_close($db); ?> でINSERTしようとするのですが、INSERT Error!と表示されてしまいます。 Adminで見るとデータベースとテーブルは出来ているのですが、どうしてもINSERTできないのです。 もう何時間も悪戦苦闘しております。 どなたかご指導よろしくお願いいたします。

  • mysqlのレコード削除

    会員登録を削除するプログラムなのですが削除できません。 ログイン時に$_SESSION['id']を既に持っている状態で$_SESSION['id']は mysqlで自動連番が付加されるPRIMARY KEY (id)です。 --- html --- <form method="post" action="unregist.php"> ~アンケート的なものでここの内容は関係ありませんので中略~ <input type="submit" name="unregist" value="退会する"> </form> --- php --- session_start(); session_regenerate_id(true); // データベース接続設定 require_once dirname(__FILE__) . "/../db_conn.php"; $conn = mysql_connect("$db_sv", "$db_user", "$db_pass") or die("接続エラー"); mysql_query("SET NAMES 'utf8'", $conn); mysql_select_db("$db_name", $conn) or die("接続エラー"); if (isset($_POST['unregist'])) { $sql = "DELETE FORM members WHERE id ='" . $_SESSION['id'] . "'"; if (mysql_query($sql, $conn)) { mysql_free_result($res); mysql_close($conn); } else { echo 'エラー!管理へお問い合わせ下さい。'; } 退会するをクリックしてもエラー!管理へお問い合わせ下さい。と 出てしまうのですがどこかおかしい箇所があるでしょうか? 調べてみたのですが自分ではわからずだったので宜しくお願い致します。

    • ベストアンサー
    • PHP
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP
  • PHP+MySQLでの配列のinsert文について

    PHP+MySQLでの配列のinsert文について はじめまして。 POSTされた配列データのDB一括挿入方法で約2週間悩み中で非常に困っております。 私の配列の理解が不足しているため、初心者の私でもわかるように解決方法をご教示いただけましたら大変助かります!何卒、よろしくお願い致します。 行いたい処理といたしまして、 [index.php] CSVアップロード(名前・メアド・金額・年月日の4項目)→※解決しました。  ↓↓↓ [check.php] CSVデータをテーブルで入力されている行数分をループして表示→※解決しました。  ↓↓↓ [finish.php] check.phpで表示した配列データをPOSTで受け取りDBに登録する。→※未解決 となります。 ソースは下記のようになります。 ※index.phpは今回無関係と思うので省略します。 ━━━━ [check.php]ここから ━━━━ ・ ・ ・ <form action="finish.php" method="post"> <? while($arr = fgetcsv_reg($fp,1024)){ ?> <? //空行以外を処理 $num = count($arr); if(!$arr ==''){ // $namae = $arr[0]; //名前 $mail = $arr[1]; //メアド $money = $arr[2]; //金額 $year = $arr[3]; //年 $month_hen = $arr[4]; //月 $month = sprintf("%02d", $month_hen); //1~9月(1桁)の場合、前に0を付加する $day_hen = $arr[5];//日 $day = sprintf("%02d", $day_hen); //1~9日(1桁)の場合、前に0を付加する // ?> <input type="hidden" name="namae[]" value="<?php echo $namae ?>"> <input type="hidden" name="mail[]" value="<?php echo $mail ?>"> <input type="hidden" name="money[]" value="<?php echo $money ?>"> <input type="hidden" name="year[]" value="<?php echo $year ?>"> <input type="hidden" name="month[]" value="<?php echo $month ?>"> <input type="hidden" name="day[]" value="<?php echo $day ?>"> ・ ・ ・ <input type="submit" value="  一括登録する  " /> </form> ━━━━ [check.php]ここまで ━━━━ ━━━━ [finish.php]ここから ━━━━ ・ ・ ・ // DB登録部分開始 if ($_POST['submit']) { $arr = array( 'reg_id', //auto_increment 'user_id', //ユーザーID(セッションで保持) 'namae', //名前 'mail', //メアド 'money',//金額 'ymd'//年月日 ); $value = array( NULL, mysql_real_escape_string( $_SESSION['user_id'] ), mysql_real_escape_string( $_POST['namae'] ), mysql_real_escape_string( $_POST['mail'] ), mysql_real_escape_string( $_POST['money'] ), mysql_real_escape_string( $_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day'] ) ); // DB登録部分終了 //ループ処理開始 foreach ( $arr as $value ) { $sql = "insert into receipt_issue ( $arr ) values ( $value )"; mysql_query($sql); $result = mysql_query( $sql ) ; //ループ処理終了 } } ・ ・ ・ ━━━━ [finish.php]ここまで ━━━━ というソースなのですが、データベースに登録できません。 例えば「finish.php」内に、 print_r( $_POST['namae'] ); と記述すると、 Array ( [0] => ああ君 [1] => いい君 [2] => うう君 [3] => ええ君 ) とちゃんと配列は受けとれているようです。 そもそもDB接続ができていないということもありません。 ※配列でない場合のテストでちゃんと接続・登録できていました。 いろいろ調べた中で、$value = array内の記述方法に問題があるのか・・・ と思い、色々調べて試したのですがダメでした。。。 上記の仕組みでループさせてデータベースに登録するには、どのように記述したらよろしいでしょうか? 情報に不足がございましたら、申し訳ございません。その点ご指摘いただきましたら必要な情報を再度投稿します。 何卒、お力をお貸しいただけましたら幸いでございます。 宜しくお願い致します!

    • 締切済み
    • PHP

専門家に質問してみよう