(PHP 5 >= 5.3.11, PHP 7, PHP 8)
PDO::sqliteCreateCollation — Registra una función definida por el usuario para emplearla como función de cotejo en sentencias SQL
Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.
name
Nombre de la función de cotejo de SQL a crear o redefinir.
callback
El nombre de una función de PHP o una definida por el usuario para aplicarla como retrollamada, definiendo el comportamiento del cotejamiento. Debería aceptar dos cadenas y devolver lo mismo que strcmp(), es decir, debería devolver -1, 1, o 0 si la primera cadena es anterior en orden, posterior, o es igual a la segunda.
Es necesario definir esta función como:
Devuelve true
en caso de éxito o false
en caso de error.
Ejemplo #1 Ejemplo de PDO::sqliteCreateCollation()
<?php
$bd = new PDO('sqlite::memory:');
$bd->exec("CREATE TABLE test (col1 string)");
$bd->exec("INSERT INTO test VALUES ('a1')");
$bd->exec("INSERT INTO test VALUES ('a10')");
$bd->exec("INSERT INTO test VALUES ('a2')");
$bd->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp');
foreach ($bd->query("SELECT col1 FROM test ORDER BY col1") as $fila) {
echo $fila['col1'] . "\n";
}
echo "\n";
foreach ($bd->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $fila) {
echo $fila['col1'] . "\n";
}
?>
El resultado del ejemplo sería:
a1 a10 a2 a1 a2 a10
Nota:
Este método no está disponible con el controlador de SQLite2. Use la API de sqlite del estilo antiguo en su lugar.