• ベストアンサー

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); クエリーを実行できませんでしたのエラーが出ます。なぜですか?

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

  • ベストアンサー
  • 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% (2127/6289)
回答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

専門家に質問してみよう