PHP.mk документација

SQLite3::createFunction

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

sqlite3.createfunction.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека sqlite3.createfunction.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SQLite3::createFunction

Референца за `sqlite3.createfunction.php` со подобрена типографија и навигација.

sqlite3.createfunction.php

SQLite3::createFunction

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::createFunctionRegisters a PHP function for use as an SQL scalar function

= NULL

public SQLite3::createFunction(
         string $name,
         callable $callback,
         int $argCount = -1,
         int $flags = 0
): bool

Registers a PHP function or user-defined function for use as an SQL scalar function for use within SQL statements.

Параметри

name

Name of the SQL function to be created or redefined.

callback

The name of a PHP function or user-defined function to apply as a callback, defining the behavior of the SQL function.

Оваа функција треба да биде дефинирана како:

callback(mixed $value, mixed ...$values): mixed
value

Првиот аргумент што се предава на SQL функцијата.

values

Понатамошни аргументи што се предаваат на SQL функцијата.

argCount

Бројот на аргументи што ги зема SQL функцијата. Ако овој параметар е -1, тогаш SQL функцијата може да земе било кој број на аргументи.

flags

A bitwise conjunction of flags. Currently, only SQLITE3_DETERMINISTIC е поддржано, што специфицира дека функцијата секогаш враќа ист резултат дадени исти влезови во рамките на еден SQL израз.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true upon successful creation of the function, false при неуспех.

Дневник на промени

Верзија = NULL
7.1.4 На flags параметарот е додаден.

Примери

Пример #1 SQLite3::createFunction() example

<?php
function my_udf_md5($string) {
return
hash('md5', $string);
}

$db = new SQLite3('mysqlitedb.db');
$db->createFunction('my_udf_md5', 'my_udf_md5');

var_dump($db->querySingle('SELECT my_udf_md5("test")'));
?>

Горниот пример ќе прикаже нешто слично на:

string(32) "098f6bcd4621d373cade4e832627b4f6"

Белешки од корисници 2 забелешки

koalay на gmail точка com
пред 15 години
Since regular expression is not supported by default SQLite, we can create a user function to do the job.

<?php

$db = new SQLite3("database.sqlit3", 0666);

// create a function named "preg_match"
// with the php core function "preg_match"
if ($db->createFunction("preg_match", "preg_match", 2) === FALSE)
  exit("Failed creating function\n");

// this query will then works as expected
$result = $db->query("SELECT * FROM table1 WHERE 
  preg_match('/^(apple|orange)$/', variable1)");

?>
bohwaz
пред 14 години
In PHP 5.4 there will be a createCollation method to use your custom collation method, to be able to sort datasets using unicode, like this:

<?php
setlocale(LC_COLLATE, 'fr_FR.UTF-8');
$db->createCollation('PHP_COLLATE', 'strcoll');

$db->query('SELECT * FROM my_table ORDER BY name COLLATE PHP_COLLATE;');
?>

But until this cool feature becomes available, you'll have to do some tricks, like this for french:

<?php
function sqlite3_to_ascii($str, $charset = 'UTF-8')
{
    // Don't process empty strings
    if (!trim($str))
        return $str;

    // We only process non-ascii strings
    if (preg_match('!^[[:ascii:]]+$!', $str))
        return $str;

    $str = htmlentities($str, ENT_NOQUOTES, $charset);

    $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
    $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
    $str = preg_replace('#&[^;]+;#', '', $str);

    return $str;
}

$db->createFunction('to_ascii', 'sqlite3_to_ascii', 1);
$res = $db->query('SELECT * FROM test ORDER BY to_ascii(text);');
?>

This will convert non-ascii characters to ascii ones before collation. In fact this won't work with non-latin languages, but for latin-languages it's better than nothing.

Please note that this will slow down about 1.8 times the query (tested on a 10.000 rows table).
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.