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