(PHP 8 >= 8.4.0)
Pdo\Sqlite::createFunction β Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π² SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ
$function_name,$callback,$num_args = -1,$flags = 0
ΠΠ΅ΡΠΎΠ΄ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ PHP-ΡΡΠ½ΠΊΡΠΈΡ Π² SQLite
Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π² SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ
.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΡΡΠΈΠ³Π³Π΅ΡΠ°Ρ
ΠΈΠ»ΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠ°Ρ
Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ SELECT, UPDATE
ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ
Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ SQL-ΡΡΠ½ΠΊΡΠΈΡ.
function_namecallbackΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: SQLite ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· callback-ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ² Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°:
valueΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ SQL-ΡΡΠ½ΠΊΡΠΈΠΈ.
valuesΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ SQL-ΡΡΠ½ΠΊΡΠΈΠΈ.
num_args-1 SQL-ΡΡΠ½ΠΊΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
flagsPdo\Sqlite::DETERMINISTIC,
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΏΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠΉ SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ SQL-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Pdo\Sqlite::createFunction()
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ SHA256, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ Ρ Π΅Ρ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΠ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°. ΠΠ°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $rows, ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΡΠΎΡΡΠΎΠΈΡ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ
Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π² ΡΠΈΠΊΠ»Π΅ foreach.
<?php
function sha256_and_reverse($string)
{
return strrev(hash('sha256', $string));
}
$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->createFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();