Manual SQLite and PHP
Manual SQLite and PHP
Wez Furlong
Marcus Boerger
SQLite
Dedicated Host
Internet
Apache
mod_php
ext/sqlite
SQL
Browser
Browser
Browser
Browser
Browser
Browser
Browser
ISP/Shared Host
Internet
Apache
mod_php
ext/sqlite
SQL
Browser
Browser
Browser
Browser
Browser
Browser
Browser
Embedded
GTK / ???
CLI / EMBED
ext/sqlite
SQL
<?php
// Opening and Closing
// Open the database (will create if not exists)
$db = sqlite_open("foo.db");
// simple select
$result = sqlite_query($db, "SELECT * from foo");
// grab each row as an array
while ($row = sqlite_fetch_array($result)) {
print_r($row);
}
// close the database
sqlite_close($db);
?>
Query Functions
resource sqlite_query ($db, $sql [, int result_type ])
Buffered query = Flexible
More memory usage
Also have an unbuffered variant = Fast
array sqlite_array_query ($db, $sql [,int result_type]])
Flexible, Convenient
Slow with long result sets
<?php
// Default result type SQLITE_BOTH
$result = sqlite_query($db,
"SELECT first, last from names");
$row = sqlite_fetch_array($result);
print_r($row);
?>
Array
(
[0] => Joe
[1] => Internet
[first] => Joe
[last] => Internet
)
<?php
// column names only
$result = sqlite_query($db,
"SELECT first, last from names");
$row = sqlite_fetch_array($result, SQLITE_ASSOC);
print_r($row);
?>
Array
(
[first] => Joe
[last] => Internet
)
<?php
// column numbers only
$result = sqlite_query($db,
"SELECT first, last from names");
$row = sqlite_fetch_array($result, SQLITE_NUM);
print_r($row);
?>
Array
(
[0] => Joe
[1] => Internet
)
<?php
// Collecting all rows from a query
// Get the rows as an array of arrays of data
$rows = array();
$result = sqlite_query($db,
"SELECT first, last from names");
// grab each row
while ($row = sqlite_fetch_array($result)) {
$rows[] = $row;
}
// Now use the array; maybe you want to
// pass it to a Smarty template
$template->assign("names", $rows);
?>
<?php
// The same but with less typing and
// more speed
// Get the rows as an array of arrays of data
$rows = sqlite_array_query($db,
"SELECT first, last from names");
// give it to Smarty
$template->assign("names", $rows);
?>
Array Interface
array sqlite_fetch_array (resource result [,
int result_type [, bool decode_binary ]])
Flexible
Slow for large result sets
array sqlite_fetch_all (resource result [,
int result_type [, bool decode_binary ]])
Flexible
Slow for large result sets; better use
sqlite_array_query ()
<?php
$count = sqlite_single_query($db,
"SELECT count(first) from names");
echo There are $count names";
?>
<?php
$first_names = sqlite_single_query($db,
"SELECT first from names");
print_r($first_names);
?>
Array
(
[0] => Joe
[1] => Peter
[2] => Fred
)
Meta information
int sqlite_num_rows (resource result)
Number of rows in a SELECT
int sqlite_num_fields (resource result)
Number of columns in a SELECT
int sqlite_field_name (resource result, int field_index)
Name of a selected field
int sqlite_changes (resource db)
Number of rows changed by a UPDATE/REPLACE
int sqlite_last_insert_rowid (resource db)
ID of last inserted row
Iterator Interface
array sqlite_current (resource result [, int result_type [,
bool decode_binary ]])
Returns the current selected row
bool sqlite_rewind (resource result)
Rewind to the first row of a buffered query
bool sqlite_next (resource result)
Moves to next row
bool sqlite_has_more (resource result)
Returns true if there are more rows
bool sqlite_seek (resource result, int row)
Seeks to a specific row of a buffered query
Using Iterators
<?php
$db = sqlite_open("");
for ($res = sqlite_query ("SELECT", $db);
sqlite_has_more ($res);
sqlite_next ($res))
{
print_r (sqlite_current ($res));
}
?>
<?php
function md5_and_reverse($string) {
return strrev(md5($string));
}
sqlite_create_function($db,
'md5rev', 'md5_and_reverse');
$rows = sqlite_array_query($db,
'SELECT md5rev(filename) from files');
?>
<?php
function max_len_step(&$context, $string) {
if (strlen($string) > $context) {
$context = strlen($string);
}
}
function max_len_finalize(&$context) {
return $context;
}
sqlite_create_aggregate($db,
'max_len', 'max_len_step',
'max_len_finalize');
$rows = sqlite_array_query($db,
'SELECT max_len(a) from strings');
print_r($rows);
?>
Utility Functions
void sqlite_busy_timeout (resource db, int ms)
Set busy retry duration.
If ms <= 0, no waiting if performed
int sqlite_last_error (resource db)
Returns last error code from database
string sqlite_error_string (int error_code)
Converts error code to a readable string
string sqlite_libversion ()
Returns version of the linked SQLite library
string sqlite_libencoding ()
Returns charset encoding used by SQLite library
Resources
Documentation at
http://docs.php.net/?q=ref.sqlite