PDO::sqliteCreateCollation
(PHP 5 >= 5.3.11)
PDO::sqliteCreateCollation — Registra una función definida por el usuario para emplearla como función de cotejo en sentencias SQL
Descripción
Esta función ha sido declarada EXPERIMENTAL. Su comportamiento, su nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Use esta función bajo su propio riesgo.
Parámetros
-
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:
int collation ( string$string1, string$string2)
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Ejemplos
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
Notas
Nota:
Este método no está disponible con el controlador de SQLite2. Use la API de sqlite del estilo antiguo en su lugar.