sqlite_create_function
(PHP 5, PECL pdo_sqlite:0.2-0.3 sqlite:1.0-1.0.3)
sqlite_create_function — הפוקציה משלבת פונקציות של המשתמש לשימוש בשאילתות SQL .
תיאור
sqlite_create_function() מאפשרת לך לרשום פונקציות PHP בשילוב עם SQLite , בדומה ל UDF (User Defined Function), כך שניתן יהיה להשתמש בהם מתוך שאילתות SQL.
db מציין את הבסיס הנתונים שכלפיו תתבצע ההרחבה, function_name מציין את שם הפונקציה שברצונך להוסיף , callback השם של פונקצית ה PHP . הפרמטר האופציונאלי num_args מרמז ל מפענח של ה- SQLite, על מספר הפרמטרים שהפונציה תקבל, מומלץ לא להתשמש בפרמטר זה, אלא כן הפונקציה שלך מקבלת מספר מוגדר ומוחלט של פרמטרים.
ניתן להתשמש בפונקציה בכל חלק של שאילתת SQL , שיכולה לקרוא לפונקציות, למשל: SELECT או UPDATE , או בשימוש בטריגרים.
Example#1 sqlite_create_function() example
<?php
function md5_and_reverse($string) {
return strrev(md5($string));
}
if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
sqlite_create_function($dbhandle, 'md5rev', 'md5_and_reverse', 1);
$sql = 'SELECT md5rev(filename) FROM files';
$rows = sqlite_array_query($dbhandle, $sql);
} else {
echo 'Error opening sqlite db: ' . $sqliteerror;
exit;
}
?>
בדוגמא יש לנו פוקציה שמחשבת את ה- md5 של מחרוזת ואז הופכת אותה כששאילתת ה SQL מבצעת את הפונקציה, שם הקובץ שיתקבל בתוך $rows יתקבל בצורה מעובדת.
ע"י שימוש בטכניקה הזאת חסכנו את הצורך להשתמש בלולאה כדוגמת - foreach() , וקיבלנו את הפלט מעובד ישר מבסיס הנתונים.
על מנת להתשמש בפונקציות PHP אין צורך להשתמש בפונקציה sqlite_create_function(), בעת פתיחת בסיס הנתונים נוצרת פונקציית php , שבעזרתה אפשר לקרוא לכל פונקציות PHP.
Example#2 Example of using the PHP function
<?php
$rows = sqlite_array_query($dbhandle, "SELECT php('md5', filename) from files");
?>
הדוגמא הזאת תקרא לפונקציה md5() , עבור כל filename, והתוצאות יוכנסו ל $rows .
Note: PHP לא תשתמש בצורה אוטומטית בפונקציות UDF של המשתמש, במקרה של נתונים בינאריים, בגלל שיקול של ביצועים. כדאי להשתמש בפונקציות אלה נדרשת התערבות של המתכנת. לפרטים נוספים הסתכל בפונקציות sqlite_udf_encode_binary() וsqlite_udf_decode_binary() .
בכל אופן לא ממולץ להשתמש בפונקציות UDF לעיבוד נתונים בינאריים, אלא אם כן אין חשיבות למהירות עבודת האפליקציה
אתה יכול להשתמש בפונקציות sqlite_create_function() ו sqlite_create_aggregate()לרמוס פונקציות SQL ב SQLite .
ראה גם sqlite_create_aggregate().