日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP事はじめ » MySQLに、登録日時がエラーでinsert 出来ない

MySQLに、登録日時がエラーでinsert 出来ない

ページ: 1

投稿者 投稿
会員
登録者: 9 2010
返信数: 7
お世話になっております。
以下のコードでフォームで入力された値、および、登録日時をデータベースに登録しようとしています。

if (!empty($_POST)) {
// 登録処理をする
$sql = sprintf('insert into members set name = "%s", email = "%s", password = "%d", picture = "%s" created = "%s"',
mysql_real_escape_string($_SESSION['join']['name']),
mysql_real_escape_string($_SESSION['join']['email']),
sha1(mysql_real_escape_string($_SESSION['join']['password'])),
mysql_real_escape_string($_SESSION['join']['image']['name']),
date("Ymd")
);
mysql_query($sql) or die (mysql_error());
unset($_SESSION['join']);

header('Location: thanks.php');
}

すると、以下のエラーが出ます。

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 'created = "20100921"' at line 1

created カラムの型を、dateやtextに変換したりしてみましたが、変わりませんでした。登録日時の部分を消して動かすと、登録することが出来ました。

構文 :twisted: エラーの原因は何でしょうか?

アドバイスよろしくお願いします。
会員
登録者: 8 2009
返信数: 103
こんにちは。
phpはなんら関係なくsql(mysql)の構文が原因では?

insert into members(name, email, password, picture, created) values(~~~~);

文字列はダブルクォーテーションではなくシングルクォーテーションで囲みます。

あと、pdoにしたほうがいいような…。
会員
登録者: 9 2010
返信数: 7
$sql = sprintf('insert into members(name, email, password, picture, created) values ("%s","%s","%d","%s","%s")',
mysql_real_escape_string($_SESSION['join']['name']),
mysql_real_escape_string($_SESSION['join']['email']),
sha1(mysql_real_escape_string($_SESSION['join']['password'])),
mysql_real_escape_string($_SESSION['join']['image']['name']),
date('Y-m-d')
);

でうまくいきました。

pdo に関しては、まだ知らないので勉強してみたいと思います。

nulla さん、ありがとうございました。

ページ: 1

日本PHPユーザ会 掲示板 » PHP事はじめ » MySQLに、登録日時がエラーでinsert 出来ない

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています