dポイントプレゼントキャンペーン実施中!

PHP、MySQLにて、とあるデータを画面から入力しDBへInsertするようなサイトを構築しています。
正常に動作し、画面で入力した内容が作成したDBにしっかり登録されていることを確認できましたが、DB接続エラーやデータ型の不一致が生じた場合にそのエラーの内容をユーザにエラーメッセージとしてデザインされた画面上に表示させたいと思っています。
ちなみに、データ型の不一致については、不一致が起こらないように入力時(入力内容の確認画面の前)にて文字数、半角英数などのチェックはしてはじいています。

こういった場合はどのように作りこみをしていけば宜しいでしょうか。
何かエラーコードのようなものを受け取ることができれば、それを元にメッセージを用意するだけで実現できそうですが、考え方について教えて頂けますでしょうか。
どこか参考になりそうなサイト等もございましたら教えて頂けますでしょうか。
よろしくお願いいたします。

A 回答 (3件)

PDOであればPDO::errorInfo、mysql_系であればmysql_errorで行けると思います。



http://www.php.net/manual/ja/pdo.errorinfo.php
http://jp1.php.net/manual/ja/function.mysql-erro …
    • good
    • 0
この回答へのお礼

ありがとうございます。PDO、mysql_errorともに初めて見る内容で吸収できるまで時間がかかりそうですが、がんばって勉強します。ありがとうございました。

お礼日時:2013/08/09 18:49

訂正



× if (!isset($_REQUEST['name']) || !is_string($id = $_REQUEST['name'])) {
○ if (!isset($_REQUEST['name']) || !is_string($name = $_REQUEST['name'])) {
    • good
    • 0

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');

}
    • good
    • 0
この回答へのお礼

詳細なサンプル、ありがとうございます。また初級者なので、わからないことだらけですが、がんばって吸収しようと思います。勉強の大変貴重なヒントになりました。ありがとうございます。

お礼日時:2013/08/09 18:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!