(PHP 5 >= 5.3.11, PHP 7, PHP 8)
PDO::sqliteCreateCollation — 注册一个用户定义函数作为 SQL 语句中的排序函数
此函数为实验性。此函数的行为、名称以及周围的文档可能会在 PHP 的未来版本中发生变化,恕不另行通知。使用此函数风险自负。
name
要创建或重新定义的 SQL 排序函数的名称。
callback
要作为回调应用的 PHP 函数或用户定义函数的名称,用于定义排序的行为。它应该接受两个字符串并像 strcmp() 一样返回,即如果第一个字符串在第二个字符串之前排序、在第二个字符串之后排序或等于第二个字符串,则应返回 -1、1 或 0。
此函数需要定义为
示例 #1 PDO::sqliteCreateCollation() 示例
<?php
$db = new PDO('sqlite::memory:');
$db->exec("CREATE TABLE test (col1 string)");
$db->exec("INSERT INTO test VALUES ('a1')");
$db->exec("INSERT INTO test VALUES ('a10')");
$db->exec("INSERT INTO test VALUES ('a2')");
$db->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp');
foreach ($db->query("SELECT col1 FROM test ORDER BY col1") as $row) {
echo $row['col1'] . "\n";
}
echo "\n";
foreach ($db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $row) {
echo $row['col1'] . "\n";
}
?>
上面的示例将输出
a1 a10 a2 a1 a2 a10