0

SQL が実行されたかどうかを確認するために PDO エラーをキャッチする唯一の方法は try catch ですか? 早い段階で、私は以下のようにしていました。エラーメッセージ、エラー名などは必要ありません。真か偽かだけです。SQLが機能したかどうか。これは、try catch を使用する以外の方法で行うことができますか。

$createUser = (insert into table (someCol) values (someVal));

$exeCreateUser = mysql_query($createUser);

if($exeCreateUser)
{ //The SQL query worked well
  echo 'All went on well';
}else{
 //The SQL query failed!
  echo 'Failed';
}

$sql  = 'insert into names (names) values (:what)';
$what = "This value";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':what', $what, PDO::PARAM_STR, 5);
$stmt->execute();

try catch を使用する代わりに、以前と同じようにできますか?

4

3 に答える 3

0

メソッドを呼び出す前以外の値PDO::setAttributeに設定するために使用できます。PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION

これを行う場合は、PDO::errorCodeまたはPDOStatement::errorCodeを使用して、各操作に適したものを使用してエラーをチェックする必要があります。

PDO::errorCode()データベース ハンドルで直接実行された操作のエラー コードのみを取得します。またはを使用してPDOStatementオブジェクトを作成し、ステートメント ハンドルでエラーを呼び出した場合、はそのエラーを反映しません。特定のステートメント ハンドルで実行された操作のエラー コードを返すには、 を呼び出す必要があります。PDO::prepare()PDO::query()PDO::errorCode()PDOStatement::errorCode()

于 2013-04-26T13:34:46.503 に答える
-1

try..catch も何も必要ありません。

通常、クエリが成功したかどうかを確認する必要はありません。適切に調整されたシステムでは、すべてのクエリがスムーズに実行されます。

ただし、一部のクエリが暴走した場合は、何かがうまくいかず、アプリケーション全体を停止する必要があることを意味します。したがって、個々のクエリをすべてチェックする必要はありません。スローされた例外をアプリケーションレベルでキャッチするだけです。

したがって、そのような状態はまったく役に立ちません。挿入の失敗は、CreateUser の失敗を意味するのではなく、サイト全体の失敗を意味します。また、ローカル チェックは必要ありませんが、サイト全体の例外ハンドラーと一般的なエラー 503 ページだけが必要です。

于 2013-04-26T14:13:14.527 に答える