簡単なメールアドレスやパスワードをチェックしてMysqlに格納するだけのコードですが、実行すると
ブラウザ上に「SQLSTATE[HY000]: General error」
が表示されるのですが、実際のデータはきちんとINSERTされています。どうしてこのような挙動になるのでしょうか?
※common.phpには関係のないエスケープ処理を行う簡単な関数が入っています。
<!DOCTYPE html> <html> <head><meta charset=UTF-8> <title>仮登録完了</title> </head> <body> <?php require_once('../common/common.php'); $post=sanitize($_POST); $user_mail=$post['user_mail']; $user_pass1=$post['user_pass1']; $user_hand=$post['user_hand']; $user_pass1=md5($user_pass1); $dsn='mysql:host=localhost;dbname=idol;charset=utf8'; $user='root'; $password=''; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try { //$dbh->beginTransaction(); $sql='INSERT INTO mst_userdb (member_mail,member_pass,idol_name) VALUE(?,?,?)'; $stmh=$dbh->prepare($sql); $data[]=$user_mail; $data[]=$user_pass1; $data[]=$user_hand; $stmh->execute($data); //$dbh->commit(); $rec=$stmh->fetch(PDO::FETCH_ASSOC); var_dump($rec); print '仮登録が完了しました。<br />'; print '登録したメールアドレスに<br />'; print '本登録用URLがありますので<br />'; print 'それをタップすれば本登録完了です。'; print $rec['member_mail']; } catch(Exception $e) { //$dbh->rollBack(); print 'ただいま障害により大変ご迷惑をお掛けしております。'; print $e->getMessage(); } $dbh=null; ?> </body> </html>
回答1件
あなたの回答
tips
プレビュー