2

PHPでSQLiteを使用して(したがってPDOを使用して)、次のコードを使用します。

try {
$db = new PDO("sqlite:C:\Program Files\Spiceworks\db\spiceworks_prod.db");

echo "Done.<br /><b>";

$query = "SELECT id FROM Devices LIMIT 5";

echo "Results: ";

$result = $db->query($query);

while ($row = $result->fetchArray()) {
    print_r($row)."|";
}
}
catch(PDOException $e) {  
    echo $e->getMessage();  
}

ただし、SQLからデータを出力することはありません。データベースにデータがあり、接続が有効であることを知っています。クエリを次のように変更すると、次のようになります。

$query = "SELECT BLAHid FROM FakeDevices LIMIT 5";

何も変わりません。SQLから何も出力されなくなり、これは明らかに無効なSQLクエリですが、エラーは表示されません。

どちらの状況でも、「完了」と「結果」は正常に出力されます。クエリが無効である場合など、SQLエラーを出力するにはどうすればよいですか?

4

1 に答える 1

7

例外をスローするようにPDOに指示する必要があります。これを行うには、データベースに接続した後に次の行を追加します。

$db = new PDO("sqlite:C:\Program Files\Spiceworks\db\spiceworks_prod.db");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

そうすれば、最初の行であるデータベース接続自体で発生する可能性のある問題を除いて、すべての例外をキャッチできます。

于 2012-05-09T14:17:27.480 に答える