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

解決済みの質問

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


クエリーを実行できませんでしたのエラーが出ます。なぜですか?

投稿日時 - 2007-08-19 22:18:54

QNo.3268945

すぐに回答ほしいです

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

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

投稿日時 - 2007-08-19 22:43:24

補足

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

になりました。

投稿日時 - 2007-08-19 22:47:25

ANo.3

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

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

回答(5)

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

となります。

投稿日時 - 2007-08-20 00:10:24

お礼

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

投稿日時 - 2007-08-20 10:31:25

ANo.4

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

投稿日時 - 2007-08-19 22:52:04

補足

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

投稿日時 - 2007-08-19 22:54:06

お礼

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

投稿日時 - 2007-08-19 23:05:32

ANo.2

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

投稿日時 - 2007-08-19 22:35:53

補足

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

投稿日時 - 2007-08-19 22:43:06

ANo.1

(1)発行しているSQL文の内容は正しいですか?
mysql_query($query)
の直前で、var_dump($query);
あたりを使って確認してみてください。

(2)all_cleaning_userテーブルのカラム構成を教えてください。

投稿日時 - 2007-08-19 22:35:34

補足

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

投稿日時 - 2007-08-19 22:40:59

あなたにオススメの質問