PHP、MySQLにて、とあるデータを画面から入力しDBへInsertするようなサイトを構築しています。
正常に動作し、画面で入力した内容が作成したDBにしっかり登録されていることを確認できましたが、DB接続エラーやデータ型の不一致が生じた場合にそのエラーの内容をユーザにエラーメッセージとしてデザインされた画面上に表示させたいと思っています。
ちなみに、データ型の不一致については、不一致が起こらないように入力時(入力内容の確認画面の前)にて文字数、半角英数などのチェックはしてはじいています。
こういった場合はどのように作りこみをしていけば宜しいでしょうか。
何かエラーコードのようなものを受け取ることができれば、それを元にメッセージを用意するだけで実現できそうですが、考え方について教えて頂けますでしょうか。
どこか参考になりそうなサイト等もございましたら教えて頂けますでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
PDOであればPDO::errorInfo、mysql_系であればmysql_errorで行けると思います。
http://www.php.net/manual/ja/pdo.errorinfo.php
http://jp1.php.net/manual/ja/function.mysql-erro …
ありがとうございます。PDO、mysql_errorともに初めて見る内容で吸収できるまで時間がかかりそうですが、がんばって勉強します。ありがとうございました。
No.3
- 回答日時:
訂正
× if (!isset($_REQUEST['name']) || !is_string($id = $_REQUEST['name'])) {
○ if (!isset($_REQUEST['name']) || !is_string($name = $_REQUEST['name'])) {
No.2
- 回答日時:
PDOならばPDO::errorInfoで1回1回チェックせずとも、PDO::ERRMODE_EXCEPTIONにエラーモードを設定すれば全て例外としてスローしてくれるのでとっても処理がラクになります。
http://php.net/manual/ja/book.pdo.php
http://www.phpbook.jp/tutorial/pdo/
http://takuya-1st.hatenablog.jp/entry/20110907/1 …
http://stackoverflow.com/questions/4361459/php-p …
http://www.tokumaru.org/d/20110322.html
<?php
try {
if (!isset($_REQUEST['id']) || !is_string($id = $_REQUEST['id'])) {
throw new Exception("invalid parameter 'id'");
}
if (!isset($_REQUEST['name']) || !is_string($id = $_REQUEST['name'])) {
throw new Exception("invalid parameter 'name'");
}
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1;charset=utf8', 'user', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('INSERT INTO myTable (id, name) VALUES (?, ?)');
$stmt->execute(array($id, $name));
echo 'inserting done.';
} catch (Exception $e) {
echo htmlspecialchars('error : ' . $e->getMessage(), ENT_QUOTES, 'UTF-8');
}
詳細なサンプル、ありがとうございます。また初級者なので、わからないことだらけですが、がんばって吸収しようと思います。勉強の大変貴重なヒントになりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Windows 10 windowsセキュリティーでパスワードエラー 1 2022/06/14 19:49
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpで変数を使ってcopyできない
-
PHPからHTMLへの変数の受け...
-
VBA で、スペースを含むファイ...
-
【PHP】void関数についてよく理...
-
画像をDBに登録できない
-
PHPでのスペースの取り方につい...
-
xmlデータの編集について
-
ファイル名を変更してアップロ...
-
フォームで送られてきたメール...
-
PHP複数検索について
-
マクロ(VBA)について
-
空文字
-
IPアドレスによる振り分け
-
検索結果の出力先を違うフレー...
-
フォーム入力情報を確認表示さ...
-
phpでショッピングカート機能を...
-
クッキー認証>クッキー削除が...
-
【かなり初歩的な質問です】php...
-
画像アップロード時の複数パタ...
-
HTMLで前の画面に戻る時、入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
ファイル名を変更してアップロ...
-
PHPで入力フォームでデータを確...
-
foreachがうまく動かない
-
PHP MySql 画像を取得
-
phpで変数を使ってcopyできない
-
PHPからHTMLへの変数の受け...
-
サブフォルダ内の全てのテキス...
-
UPDATEできない
-
php+mysqlでの重複チェックにつ...
-
phpでショッピングカート機能を...
-
fputcsv()で1レコード1行になる...
-
openCVのトラックバーについて
-
$a = ( $b == $c ) ? $d、 この...
-
if文のなかで
-
配列の値
-
sqlite文字列を格納、出力
-
ファイルアップローダーで送信...
おすすめ情報