PHP 7.0.6 Released

The SQLite3 class

(PHP 5 >= 5.3.0, PHP 7)

Introduction

A class that interfaces SQLite 3 databases.

Class synopsis

SQLite3 {
/* Methods */
public bool busyTimeout ( int $msecs )
public int changes ( void )
public bool close ( void )
public __construct ( string $filename [, int $flags [, string $encryption_key ]] )
public bool createAggregate ( string $name , mixed $step_callback , mixed $final_callback [, int $argument_count = -1 ] )
public bool createCollation ( string $name , callable $callback )
public bool createFunction ( string $name , mixed $callback [, int $argument_count = -1 ] )
public static string escapeString ( string $value )
public bool exec ( string $query )
public int lastErrorCode ( void )
public string lastErrorMsg ( void )
public int lastInsertRowID ( void )
public bool loadExtension ( string $shared_library )
public void open ( string $filename [, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key ]] )
public SQLite3Stmt prepare ( string $query )
public SQLite3Result query ( string $query )
public mixed querySingle ( string $query [, bool $entire_row = false ] )
public static array version ( void )
}

Table of Contents

User Contributed Notes

Anonymous
2 years ago
There is an undocumented method "createCollation" in this class, as reported on https://bugs.php.net/bug.php?id=65216

The syntax of the method is similar to usort for example:

createCollation(collation_name, callback)

The callback function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

Here is one example of use to collate unicode text as ASCII, so that for example in french Émilie will be ordered just after Emile and not after Zebra like it's the case with the default BINARY collation. This requires the "intl" module to be installed, see PHP doc for details (or apt-get install php5-intl in deb based distros).

<?php

$db
= new SQLite3(':memory:');

$db->createCollation('translit_ascii', function ($a, $b) {
   
$a = transliterator_transliterate('Any-Latin; Latin-ASCII; Lower()', $a);
   
$b = transliterator_transliterate('Any-Latin; Latin-ASCII; Lower()', $b);
    return
strcmp($a, $b);
});

$db->exec('
  CREATE TABLE people (name COLLATE translit_ascii);
  INSERT INTO people VALUES ("Émilie");
  INSERT INTO people VALUES ("Zebra");
  INSERT INTO people VALUES ("Emile");
  INSERT INTO people VALUES ("Arthur");
'
);

$stmt = $db->prepare('SELECT name FROM people ORDER BY name;');
$result = $stmt->execute();

while (
$row = $result->fetchArray())
{
    echo
$row['name'] . PHP_EOL;
}

// Displays:
// Arthur
// Emile
// Émilie
// Zebra

?>
To Top