ConFoo: Call for paper is now Open

The SQLite3 class

(PHP 5 >= 5.3.0)

Introduzione

A class that interfaces SQLite 3 databases.

Sommario dellla classe

SQLite3 {
/* Metodi */
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 )
}

Indice dei contenuti

add a note add a note

User Contributed Notes 1 note

up
0
Anonymous
1 year 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