重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

MySQLでのアップデートがうまくいかないので質問させていただきます。

やりたいこととしては、ログイン後、ID(customer_code)がDBにあれば、該当する行のデータを画面に表示させ、もし入力値を変更する場合は画面上で変更、「更新」ボタンを押すと、そのままDBに反映させる(update)という動きです。

未ログイン時の動きは思ったように実現できています。

var_dump( $res ); としたところ、bool(false)がかえってきたため、SQLの値がうまく戻ってきていないことがわかりました。

また、print mysql_error($conn); としたところ、「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 'comment = 'XXXX', university = 'XXXXX', favorite_sports = 'XXXXX', ' at line 1 」というようなエラーがかえってきました。
※XXXの所は、画面で入力した文字が入っています。

1点気になっているのは、comment = 'XXXX', university = 'XXXXX', favorite_sports 以外に seibetsu などの値も変更しているのに、上部のエラー内容にのってこないこと です。
(的を得ているかわかりませんが・・。)

もともとのコードは、正常に動くものからコピーをし、値の部分を適当なものに変えています。
カンマなどが間違っているのかと思い、何度か最初から試してみましたが、いっこうに変化がないため、質問させていただいた次第です。

以下のupdateのコードで何かおかしな所があればご教授いただければと思います。
よろしくお願いします。




/**-----------------------------------------------------------
*
* 会員登録画面で「更新」ボタンがクリックされた時の処理。
* ログイン状態に応じて、UPDATE または INSERT を実行する。
*
------------------------------------------------------------*/
if( $_REQUEST["cmd"] == "regist_member" )
{
if( $_SESSION["customer_code"] != "" )
{
// ここに、ログイン済の場合の処理を記述。
$sql = " update DBpractice set ";
$sql .= " customer_code = '" . $_REQUEST["customer_code"] . "',";
$sql .= " pass = '" . $_REQUEST["pass"] . "',";
$sql .= " name = '" . $_REQUEST["name"] . "',";
$sql .= " mail = '" . $_REQUEST["mail"] . "'";
$sql .= " comment = '" . $_REQUEST["comment"] . "',";
$sql .= " university = '" . $_REQUEST["university"] . "',";
$sql .= " favorite_sports = '" . $_REQUEST["favorite_sports"] . "',";
$sql .= " seibetsu = '" . $_REQUEST["seibetsu"] . "',";
$sql .= " where customer_code = '" . $_SESSION["customer_code"] . "'";
$res = mysql_query( $sql );

print mysql_error($conn);
var_dump( $res );

}


else
{
// ここに、ログイン未の場合の処理を記述。
$sql = "insert into DBpractice( customer_code, pass, name, mail, comment, university, favorite_sports, seibetsu, del_flag, reg_date ) ";
$sql .= "values( ";
$sql .= " '".$_REQUEST["customer_code"]."', ";
$sql .= " '".$_REQUEST["pass"]."', ";
$sql .= " '".$_REQUEST["name"]."', ";
$sql .= " '".$_REQUEST["mail"]."', ";
$sql .= " '".$_REQUEST["comment"]."', ";
$sql .= " '".$_REQUEST["university"]."', ";
$sql .= " '".$_REQUEST["favorite_sports"]."', ";
$sql .= " '".$_REQUEST["seibetsu"]."', ";

$sql .= " '0', ";
$sql .= " now() ) ";
$res = mysql_query( $sql );

}
}

A 回答 (2件)

今回も凡ミスですよ



>$sql .= " seibetsu = '" . $_REQUEST["seibetsu"] . "',";

今度はカンマがいらないです
これだとwhereの前にカンマがはることになります
    • good
    • 0
この回答へのお礼

今回は上手くできました。(しっかり更新されています。)
最初、カンマの有り無しの意味がわかりませんでしたが、今回のケースで理解することができました。
コードだけでなく、説明いただきありがとうございました。

お礼日時:2012/02/07 00:04

とりあえず



>$sql .= " mail = '" . $_REQUEST["mail"] . "'";

のケツにカンマが抜けているのでmailとcommentのつながりが変だね

この回答への補足

ご回答ありがとうございます。

確かに、カンマがないですね。。

調べてみた所、コピー元はカンマがなくうまく動いているのですが、とりあえず自分のコードをご指摘どおり修正してみたところエラーの箇所が変わりました。

ただ、以前、問題があるようです。。

何か他にも原因が分かればご教授いただけると幸いです。

■エラー内容

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 'where customer_code = 'XXX'' at line 1

よろしくお願いいたします。

補足日時:2012/02/06 22:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!