Authentication




Cancel OK
B!コメントする  2012-06-28 16:15:00 by old

SQLiteでエラーを拾う

ここんともSQLiteしか触ってませんが、移行も考えてPDOを使って操作するようにしてます。
プレースホルダーとか使えばセキュリティ上も好ましいことや処理速度なんかもそれほど気になりません。千分の一秒を争うようなシビアなシステムだとまた違ってくるかもしれませんが。

PDOつかっていると色々と勝手にやってくれるので便利なのですが、構文のミスや不完全な値なんかで動かない場合があります。そんなときはtry~catchでエラー内容を把握します。
繋げて検索するだけなら

$conn = new PDO("sqlite:./logs/user.sql3");  
$sql = "SELECT * FROM sqlite_sequence";  
$stmt_insert = $conn->prepare($sql);
$stmt_insert->execute(); 

でいいのですが、これだと何かあってもエラーも何も出ないので
以下のように変えます

$conn = new PDO("sqlite:./user.sql3");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try{
$sql = "SELECT * FROM sqlite_sequence";
$stmt_search = $conn->prepare($sql);
$stmt_search->execute();
}
catch( PDOException $ex)
{
echo $ex->getMessage();
}

接続後に

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  

を追加してやることでtry部分のエラーを拾うことが出来ます。
あとはエラーを拾いたい部分のtryでcatchすれば何かあった場合のエラーを確認することが出来ます。


SQL PHP  

  • コメント
  • 管理人
    一部PDOの誤字を訂正しました。 ソースについて見易くCODE指定に変更しました。
    2017-06-21 16:56:36