The notes for the return value is a little misleading to me. It states that if the query does not "return results" TRUE or FALSE is returned instead. If there is a return value for this method in your PHP code this method always returns an SQLite3Result object, even if you accidentally run an INSERT, UPDATE, DELETE, CREATE TABLE, etc query through it. The only time it returns a TRUE or FALSE is if there is no return value.
<?php
$result = $dbh->query('CREATE TABLE ...');
if (!($result instanceof Sqlite3Result)) {
echo "Query successful."; // This will never echo.
} else {
$result->fetchArray(); // This will throw an error.
}
if ($dbh->query('CREATE TABLE ...')) {
echo "Query successful."; // Works
} else {
echo "Query failed."; // Will also work
}
?>
Use exec() if you are not executing a SELECT query.
SQLite3::query
(PHP 5 >= 5.3.0)
SQLite3::query — SQL クエリを実行する
説明
SQL クエリを実行し、クエリが結果を返す場合は SQLite3Result オブジェクトを返します。
パラメータ
-
query -
実行したい SQL クエリ。
返り値
クエリが結果を返す場合は SQLite3Result オブジェクトを返します。
それ以外の場合は、成功した場合に TRUE、
失敗した場合に FALSE を返します。
例
例1 SQLite3::query() の例
<?php
$db = new SQLite3('mysqlitedb.db');
$results = $db->query('SELECT bar FROM foo');
while ($row = $results->fetchArray()) {
var_dump($row);
}
?>
pgarvin76 at gmail dot com
13-Jan-2011 04:31
