• ベストアンサー

MySQLにmd5が登録できません。

md5を使ってパスワードをハッシュ化したものをPHPからMySQLに登録したいのですが、エラーが出てしまい登録できません。 データベースの質問になるのかもしれませんが、PHPで開発しているので一応こちらで質問させていただきます。 MySQL:バージョン 5.0.41 PHP:バージョン 5.1.6 参考文献:PHPEC PHPによるECサイトプログラミング~ショッピングカートから決済まで(著:大角清美) 【PHPからの挿入文】 $sql = "insert into users (     s_login_id,     s_password,     s_register_date,     s_birthday,     s_email1,     s_postal_code,     ) values (     '".mysql_real_escape_string($_POST['s_email1'])."',     '".md5($_POST['s_password'])."',     '".date('Y-m-d H:i:s')."',     '".mysql_real_escape_string($_POST['s_year'].'_'. $_POST['s_month'] .'_'. $_POST['s_day'] . '00:00:00') ."',     '".mysql_real_escape_string($_POST['s_email1'])."',     '".mysql_real_escape_string($_POST['s_postal1'] .$_POST['s_postal2'])."', )"; 【MySQLに直接命令を打ち込んだ時のエラー文】 ERROR 1064 (42000):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 's_email1'])."', '".md5($_POST['s_password'])."', '".date('Y-m-d H:i:s')."', ' at line 16 練習としてショッピングサイトを作ってみようと本を見ながら練習している最中なのですが、近くに質問できる相手がいなくて困っております。 宜しくお願い致します。

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

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

>『MySQL Command Line』に入力してみた 案の定ですね 元の例文はPHPでプログラムでSQL文をつくっています それをコマンドラインで入力することは不可能です。 $sql = "insert into users (・・・・"; というひとくくりで一つのSQL文ですので print $sql; として画面に一度SQL文を表示してみるといいでしょう。 そのSQL文をコマンドラインに入力すれば、エラーが出るか どうか判断できると思います

Pb458
質問者

お礼

ありがとうございます、勉強になりました。 print文で出したSQL文をコマンドラインで打ち込んでみたところ、やはりエラーが出ました。 ERROR 1064(42000): 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 '?insert into users(s_login_id, s_password, s_register_date, s_name_kanji, s_na' at line 1. どこが不備なのかよくわからないので、自分でSQLのクリエイト文からもう1度見直している最中です。

その他の回答 (2)

  • sgcarrot
  • ベストアンサー率68% (17/25)
回答No.3

カンマが2箇所余分ですよ。 s_postal_code,←このカンマ '".mysql_real_escape_string($_POST['s_postal1'] $_POST['s_postal2'])."',←このカンマ

Pb458
質問者

お礼

ありがとうございます、とすみません; このSQL部分は元が長かったのでエラー文に関係無いと判断した上下を一部削ってます。 その際にカンマを消し忘れてしまったようです。 一応全文でこうなっております。 $sql = "insert into users (     s_login_id,     s_password,     s_register_date,     s_name_kanji,     s_name_kana,     s_sex,     s_birthday,     s_email1,     s_postal_code,     s_xmpf,     s_address1,     s_address2,     s_state     ) values (      '".mysql_real_escape_string($_POST['s_email1'])."',     '".md5($_POST['s_password'])."',     '".date('Y-m-d H:i:s')."',     '".mysql_real_escape_string($_POST['s_name_kanji'])."',     '".mysql_real_escape_string($_POST['s_name_kana'])."',     '".mysql_real_escape_string($_POST['s_sex'])."',     '".mysql_real_escape_string($_POST['s_year'].'_'.$_POST['s_month'] .'_'. $_POST['s_day'] . '00:00:00') ."',     '".mysql_real_escape_string($_POST['s_email1'])."',     '".mysql_real_escape_string($_POST['s_postal1'] .$_POST['s_postal2'])."',     '".mysql_real_escape_string($_POST['s_xmpf'])."',     '".mysql_real_escape_string($_POST['s_address1']) ."',     '".mysql_real_escape_string($_POST['s_address2']) ."',     '1'     )";     //print $sql; $result = mysql_query($sql);

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

>MySQLに直接命令を打ち込んだ時 のクダリが意味不明なのですが、MySQLの入力画面に、手で打ち込んだ ということですか? PHPで$sqlに代入しているのですから、そのSQL文をプログラムで sqlに渡すようにしてください

Pb458
質問者

補足

説明不足ですみません。 MySQLに~の部分はSQL文自体に問題があるのかと思い、 insert into users (     s_login_id,     s_password,     s_register_date,     s_birthday,     s_email1,     s_postal_code,     ) values (     '".mysql_real_escape_string($_POST['s_email1'])."',     '".md5($_POST['s_password'])."',     '".date('Y-m-d H:i:s')."',     '".mysql_real_escape_string($_POST['s_year'].'_'. $_POST['s_month'] .'_'. $_POST['s_day'] . '00:00:00') ."',     '".mysql_real_escape_string($_POST['s_email1'])."',     '".mysql_real_escape_string($_POST['s_postal1'] .$_POST['s_postal2'])."', ); と、『MySQL Command Line』に入力してみた場合です。 その時SQL文に対して出たエラーが上記のものになります。

関連するQ&A