Tested with PHP 5.3.1
Strangely, when running queries against an SQLite3 database, there is no obvious way to know how many rows were returned by a specific query. After much hunting, I found a solution in the PHP manual, of all places.
Let’s say we have a table with 4 columns (id, seed, name, score), with 3 rows. The rest you need to know is in the code comments, really.
$db = new SQLite3('test.sqlite', SQLITE3_OPEN_READONLY); // opens our sqlite3 database, assigns it to $db
$result = $db->query('SELECT * FROM scores ORDER BY score ASC'); // runs the query against our database and returns all the reselts to $result
$count = 0; // sets up our $count variable
while (list() = $result->fetchArray(SQLITE3_ASSOC)) { // this loop will only run while results exist
$count++; // if a result exists, adds to the $count
}
$result->reset(); // returns the array pointer back to the beginning, so we can access results in the order they were returned
if ($count > 0) { // if anything was returned by the query
echo "<pre>id\tseed\tname\tscore"; // displays our comlumn headings
for ($i = 0; $i < $count; $i++) { // the loop that will display the row data retrned by the query
echo "<br>";
$res = $result->fetchArray(SQLITE3_ASSOC); // pulls the one row into $res and automatically moves the $result pointer ahead by one
echo $res[id]."\t".$res[seed]."\t".$res[name]."\t".$res[score]; // spits out the row to the browser
}
}
else die("scores--no results"); // nothing was returned by the query
/* browser output:
id seed name score
22 1 Dangel 7
23 1 Dangel 9
21 1 Dangel 10
*/
