mysql系が非推奨とのことを知り、PDOの練習をしています。
しかし前回と同様に確認ページで止まっています。
mysqlの時に使用していた
php
1mysql_query($comp) or die(mysql_error()); 2unset($_SESSION['new']); 3header('Location:comp.php');
が使えずどうするべきかと悩んでいます。
参考書を読んだり調べてみましたがうまくいかず。
強制的に登録完了のページに飛んでもデータベースには登録されていません。
php
1try { 2$pdo = new PDO('mysql:host=localhost;dbname=register;charset=utf8','pma','1234'); 3} catch (PDOException $e) { 4 exit('データベース接続失敗。'.$e->getMessage()); 5} 6 7ini_set('display_errors', 1); 8error_reporting(E_ALL); 9 10session_start(); 11 12if(!isset($_SESSION['new'])){ 13 header('Location:new.php'); 14} 15 16if($_SESSION['new']['gender'] == 1){ 17 $radio = '男'; 18}else{ 19 $radio = '女'; 20} 21 22 23$spl = $pdo -> query('SELECT * FROM prefecturals WHERE preNO ='.$_SESSION['new']['pre']); 24 if($data = $spl -> fetch(PDO::FETCH_ASSOC)){ 25 $preName = $data['preName']; 26} 27 28 29if(!empty($_POST)){ 30 31 $sql = $pdo -> query('SELECT MAX(NO) AS mNO FROM member'); 32 if($data2 = $spl -> fetch(PDO::FETCH_ASSOC)){ 33 $comp = $pdo -> prepare('INSERT INTO member (NO,ID,password,name1,name2,gender,mail,tel,post,address1,address2,address3) VALUES (:NO, :ID, :password, :name1, :name2, :gendere, :mail1, :tel, :post, :pre, :address2, :address3)'); 34 $comp -> bindValue(':NO',$data2['mNO'] + 1, PDO::PARAM_INT); 35 $comp -> bindParam(':id',mysql_real_escape_string($_SESSION['new']['ID']), PDO::PARAM_STR); 36 $comp -> bindParam(':password',mysql_real_escape_string($_SESSION['new']['password']), PDO::PARAM_STR); 37 $comp -> bindParam(':name1',mysql_real_escape_string($_SESSION['new']['name1']), PDO::PARAM_STR); 38 $comp -> bindParam(':name2',mysql_real_escape_string($_SESSION['new']['name2']), PDO::PARAM_STR); 39 $comp -> bindValue(':gender',mysql_real_escape_string($_SESSION['new']['gender']), PDO::PARAM_INT); 40 $comp -> bindParam(':mail1',mysql_real_escape_string($_SESSION['new']['mail1']), PDO::PARAM_STR); 41 $comp -> bindParam(':tel',mysql_real_escape_string($_SESSION['new']['tel']), PDO::PARAM_STR); 42 $comp -> bindParam(':post',mysql_real_escape_string($_SESSION['new']['post']), PDO::PARAM_STR); 43 $comp -> bindValue(':address1',mysql_real_escape_string($_SESSION['new']['pre']), PDO::PARAM_INT); 44 $comp -> bindParam(':address2',mysql_real_escape_string($_SESSION['new']['address2']), PDO::PARAM_STR); 45 $comp -> bindParam(':address3',mysql_real_escape_string($_SESSION['new']['address3']), PDO::PARAM_STR); 46 47 $comp->execute(); 48 49 } 50} 51
html
1 2<form method="post" action=""> 3 4<table> 5<tr><td>ID</td><td><?php echo htmlspecialchars($_SESSION['new']['ID'],ENT_QUOTES,'UTF-8'); ?></td></tr> 6<tr><td>パスワード</td><td><?php echo htmlspecialchars($_SESSION['new']['password'],ENT_QUOTES,'UTF-8'); ?></td></tr> 7<tr><td>氏名</td><td><?php echo htmlspecialchars($_SESSION['new']['name1'],ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($_SESSION['new']['name2'],ENT_QUOTES,'UTF-8'); ?></td></tr> 8<tr><td>性別</td><td><?php echo $radio; ?></td></tr> 9 10<tr><td>メールアドレス</td><td><?php echo htmlspecialchars($_SESSION['new']['mail1'],ENT_QUOTES,'UTF-8'); ?></td></tr> 11<tr><td>メールアドレス(確認)</td><td><?php echo htmlspecialchars($_SESSION['new']['mail2'],ENT_QUOTES,'UTF-8'); ?></td></tr> 12<tr><td>電話番号(ハイフンなし)</td><td><?php echo htmlspecialchars($_SESSION['new']['tel'],ENT_QUOTES,'UTF-8'); ?></td></tr> 13<tr><td>郵便番号(ハイフンなし)</td><td><?php echo htmlspecialchars($_SESSION['new']['post'],ENT_QUOTES,'UTF-8'); ?></td></tr> 14<tr><td>都道府県</td><td><?php echo $preName; ?></td></tr> 15<tr><td>住所</td><td><?php echo htmlspecialchars($_SESSION['new']['address2'],ENT_QUOTES,'UTF-8'); ?></td></tr> 16<tr><td>マンション・アパート名</td><td><?php echo htmlspecialchars($_SESSION['new']['address3'],ENT_QUOTES,'UTF-8'); ?></td></tr> 17 18</table> 19 20<p><a href="new.php?action=return">入力画面へ戻る</a> <input type="submit" value="送 信" /></p> 21 22<input type="hidden" name="name" value="<?php echo htmlspecialchars($_SESSION['new']['name'],ENT_QUOTES,'UTF-8'); ?>" /> 23 24 25</form> 26
catch(PDOException $e){
die("error:{$e->getMessage()}");
}
をどこで入れるべきでしょうか?
また、PDOはmysqlので使えたrequire('dbconnect.php');
のようなものを作ることは可能でしょうか?
ご教示お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/04 15:14