前提・実現したいこと
ここに質問の内容を詳しく書いてください。
入力フォームを作成中で、入力完了ページからDBに値を送る際に、DBでエラーがあった際に
コードによって違うエラーページに飛ばす処理を実装したいです。
該当のソースコード
PHP
1<?php 2 3session_start(); 4 5if($_POST['token'] != $_SESSION['token']){ 6 header('Location: senierror.php'); 7}else{ 8 //echo '遷移成功'; 9 session_destroy(); 10} 11 12$dsn = 'mysql:dbname=suject;host=localhost'; 13$user = 'root'; 14$password = ''; 15 16session_start(); 17 18 try { 19 $pdo = new PDO($dsn, $user, $password); 20 21 } catch (PDOException $e) { 22 23 $_SESSION['message'] = 'Connection failed: ' . mb_convert_encoding($e->getMessage(),'utf-8','sjis'); 24 $_SESSION['code'] = $e->getCode(); 25 26 if("int(2002)"){ 27 header('Location: system_error.php'); 28 } 29 if("int(1049)"){ 30 header('Location: system_error2.php'); 31 } 32 33} 34 35 36 37$stmt = $pdo->prepare("insert into applicant(name_1, 38 name_2, 39 name_kana_1, 40 name_kana_2, 41 birthday_year, 42 birthday_month, 43 birthday_day, 44 postalNo_1, 45 postalNo_2, 46 address_1, 47 address_2, 48 tel, 49 mail, 50 explanation_day, 51 pr, 52 question) 53 54 values(:name_1, 55 :name_2, 56 :name_kana_1, 57 :name_kana_2, 58 :birthday_year, 59 :birthday_month, 60 :birthday_day, 61 :postalNo_1, 62 :postalNo_2, 63 :address_1, 64 :address_2, 65 :tel, 66 :mail, 67 :explanation_day, 68 :pr, 69 :question)" 70 ); 71 72 73 74$stmt -> bindvalue(':name_1',$_POST["Lname"], PDO::PARAM_STR); 75$stmt -> bindvalue(':name_2',$_POST["Fname"], PDO::PARAM_STR); 76$stmt -> bindvalue(':name_kana_1',$_POST["lname"], PDO::PARAM_STR); 77$stmt -> bindvalue(':name_kana_2',$_POST["fname"], PDO::PARAM_STR); 78$stmt -> bindvalue(':birthday_year',$_POST["Year"], PDO::PARAM_STR); 79$stmt -> bindvalue(':birthday_month',$_POST["Month"], PDO::PARAM_STR); 80$stmt -> bindvalue(':birthday_day',$_POST["Day"], PDO::PARAM_STR); 81$stmt -> bindvalue(':postalNo_1',$_POST["left"], PDO::PARAM_STR); 82$stmt -> bindvalue(':postalNo_2',$_POST["right"], PDO::PARAM_STR); 83$stmt -> bindvalue(':address_1',$_POST["Jadd"], PDO::PARAM_STR); 84$stmt -> bindvalue(':address_2',$_POST["addressmin"], PDO::PARAM_STR); 85$stmt -> bindvalue(':tel',$_POST["num"], PDO::PARAM_STR); 86$stmt -> bindvalue(':mail',$_POST["mailadd"], PDO::PARAM_STR); 87$stmt -> bindvalue(':explanation_day',$_POST["rdo"], PDO::PARAM_STR); 88$stmt -> bindvalue(':pr',$_POST["PR"], PDO::PARAM_STR); 89$stmt -> bindvalue(':question',$_POST["Question"], PDO::PARAM_STR); 90 91$stmt -> execute(); 92?> 93 94<!DOCTYPE html> 95<html lang="ja"> 96<head> 97<meta charset="UTF-8"> 98<title>登録完了</title> 99</head> 100<body> 101 102<h1>お申し込みありがとうございました。</h1> 103 104<a href="input_backup.php">登録画面へ</a> 105 106</body> 107</html>
試したこと
$dsn = 'mysql:dbname=suject;host=localhost';
$user = 'root';
$password = '';
session_start();
try {
$pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
$_SESSION['message'] = 'Connection failed: ' . mb_convert_encoding($e->getMessage(),'utf-8','sjis'); $_SESSION['code'] = $e->getCode();
if("int(2002)"){
header('Location: system_error.php');
}
if("int(1049)"){
header('Location: system_error2.php');
}
}
上記の部分で、コードをセッションに入れ、コードがそれぞれ2002だった場合はerrorに1049だった場合はerror2に行くように
するためにif文を使用しましたが、コードが2002の場合でもerror2に遷移してしまいます。
解決方法をどうかお教え頂けないでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。