質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

解決済

入力フォームのDBに内容を入れる前のエラーメッセージの出力先の遷移

masa354
masa354

総合スコア7

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

3回答

0評価

0クリップ

156閲覧

投稿2020/04/02 06:44

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
入力フォームを作成中で、入力完了ページからDBに値を送る際に、DBでエラーがあった際に
コードによって違うエラーページに飛ばす処理を実装したいです。

該当のソースコード

PHP

<?php session_start(); if($_POST['token'] != $_SESSION['token']){ header('Location: senierror.php'); }else{ //echo '遷移成功'; session_destroy(); } $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'); } } $stmt = $pdo->prepare("insert into applicant(name_1, name_2, name_kana_1, name_kana_2, birthday_year, birthday_month, birthday_day, postalNo_1, postalNo_2, address_1, address_2, tel, mail, explanation_day, pr, question) values(:name_1, :name_2, :name_kana_1, :name_kana_2, :birthday_year, :birthday_month, :birthday_day, :postalNo_1, :postalNo_2, :address_1, :address_2, :tel, :mail, :explanation_day, :pr, :question)" ); $stmt -> bindvalue(':name_1',$_POST["Lname"], PDO::PARAM_STR); $stmt -> bindvalue(':name_2',$_POST["Fname"], PDO::PARAM_STR); $stmt -> bindvalue(':name_kana_1',$_POST["lname"], PDO::PARAM_STR); $stmt -> bindvalue(':name_kana_2',$_POST["fname"], PDO::PARAM_STR); $stmt -> bindvalue(':birthday_year',$_POST["Year"], PDO::PARAM_STR); $stmt -> bindvalue(':birthday_month',$_POST["Month"], PDO::PARAM_STR); $stmt -> bindvalue(':birthday_day',$_POST["Day"], PDO::PARAM_STR); $stmt -> bindvalue(':postalNo_1',$_POST["left"], PDO::PARAM_STR); $stmt -> bindvalue(':postalNo_2',$_POST["right"], PDO::PARAM_STR); $stmt -> bindvalue(':address_1',$_POST["Jadd"], PDO::PARAM_STR); $stmt -> bindvalue(':address_2',$_POST["addressmin"], PDO::PARAM_STR); $stmt -> bindvalue(':tel',$_POST["num"], PDO::PARAM_STR); $stmt -> bindvalue(':mail',$_POST["mailadd"], PDO::PARAM_STR); $stmt -> bindvalue(':explanation_day',$_POST["rdo"], PDO::PARAM_STR); $stmt -> bindvalue(':pr',$_POST["PR"], PDO::PARAM_STR); $stmt -> bindvalue(':question',$_POST["Question"], PDO::PARAM_STR); $stmt -> execute(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>登録完了</title> </head> <body> <h1>お申し込みありがとうございました。</h1> <a href="input_backup.php">登録画面へ</a> </body> </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に遷移してしまいます。
解決方法をどうかお教え頂けないでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます