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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

2回答

755閲覧

PHPでSQL文を使ってINSERTする場合のエラー分岐について

extliger

総合スコア30

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2018/04/28 15:18

いつもお世話になっております。

いつも下記のような形式でINSERTしております。

$db_into = "INSERT INTO "; $db_into .= "data_table"; $db_into .= " ("; $db_into .= "name,"; $db_into .= "name2,"; $db_into .= "name3,"; $db_into .= "name4"; $db_into .= ")"; $db_into .= " VALUES"; $db_into .= " ("; $num = 1; while ($num <= 4){ $db_into_hatena .= "?,"; $num = $num+1; } $db_into .= rtrim($db_into_hatena, ","); $db_into .= ")"; $db_into_smt = $dbh->prepare($db_into); $db_into_smt->bindValue(1,$name); $db_into_smt->bindValue(2,$name2); $db_into_smt->bindValue(3,$name3); $db_into_smt->bindValue(4,$name4); $db_into_smt->execute();

この記述でもしうまくDBにINSERTできなかった場合に
うまく登録できませんでした。と表記された
er.phpページなどに飛ばしたいのですが
そのような事は可能なのでしょうか?

何卒よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/04/28 20:09 編集

ちょっと質問を読み違えていたので編集しました。スルーしてください。
guest

回答2

0

ベストアンサー

利用しているのは PDO でしょうか。
であれば、

  1. execute() の戻り値 bool で、実行自体の成否が分かります。
  2. $db_into_smt->rowCount() で、execute() の結果影響した行数が分かります。0 なら insert できなかった、1 なら insert 成功です。
  3. 詳細なエラー内容が知りたければ、execute() の直後に $db_into_smt->errorInfo() を呼び出した結果を利用してください。

投稿2018/04/28 15:53

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

extliger

2018/04/30 17:29

的確な回答ありがとうございます。 大変勉強になりました。お時間と知識を頂きました事、大変ありがとうございます。
guest

0

投稿2018/04/29 16:26

fjaiofjawiefjaw

総合スコア210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問