PHPを使用してデータベースを使用するには、次のスクリプトを使用しています。
try{
$db = new PDO('mysql:host='.$host.';port='.$port.';dbname='.$db, $user, $pass, $options);
}
catch(Exception $e){
$GLOBALS['errors'][] = $e;
}
ここで、このデータベースハンドルを使用して、次のコードを使用してリクエストを実行します。
try{
$query = $db->prepare("INSERT INTO users (...) VALUES (...);");
$query->execute(array(
'...' => $...,
'...' => $...
));
}
catch(Exception $e){
$GLOBALS['errors'][] = $e;
}
ここに問題があります:
- DBへの接続に問題がなければ、すべてが機能します。
- 接続が失敗したがDBを使用していない場合、
$GLOBALS['errors'][]
アレイがあり、スクリプトはその後も実行されます。 - DBへの接続に失敗すると、次の致命的なエラーが発生します。
注意:未定義の変数:32行目のC:\ xampp \ htdocs [...]\test.phpのdb
致命的なエラー:32行目のC:\ xampp \ htdocs [...] \ test.phpの非オブジェクトでメンバー関数prepare()を呼び出す
注: 32行目が$query = $db->prepare(...)
命令です。
つまり、スクリプトがクラッシュし、try/catchは役に立たないようです。この2回目の試行/キャッチが機能しない理由とその解決方法を知っていますか?
助けてくれてありがとう!
編集:いくつかの本当に良い返事があります。自分がやりたかったこととは正確に一致しないものを検証しましたが、おそらくこれが最善のアプローチです。