Sqlite China  
首页 | 各种语言的sqlite编程 |sqlite研究 | sqlite应用实例与杂谈 | sqlite相关下载 | SQlite论坛
当前位置 : 主页>各种语言的sqlite编程>列表
PHP中如何使用sqlite_create_function函数
来源:工友 作者:工友 时间:2007-12-21

sqlite_create_function

PHP 5

注册一个用户自定义的SQL语句

描述:

void sqlite_create_function(resource $dbhandle, string $function_name, callback $callback [, int $num_args])

 

面向对象风格的方法:

class SQLiteDatabase

{

void createFunction(string $function_name, callback $callback [, int $num_args])

}

sqlite_create_function() 允许你用PHP的函数来编写扩充SQLiteUDF (用户自定义函数), 然后你就可以在SQL语句中调用该函数了.

UDF可以被用在任何能够调用SQL函数的语句中,如SELECT UPDATE 还有触发器.

参数

dbhandle

sqlite_open() 函数执行后返回的SQLite 数据库文件的句柄. 如果是使用面向对象的方法(类调用)则不需要该参数.

function_name

要创建的SQL函数名.

callback

用来实现自定义SQL函数的回调函数.

回调函数返回的数据类型应该可以被SQLite正确的识别.

num_args

如果回调函数的参数个数是固定的,则用该参数来告诉SQLite的语法分析器参数的个数.

为了能够兼容其它数据库的扩展函数(例如 MySQL),最好使用两种函数接口中第一个参数是的dbhandle那种形式.

代码演示

sqlite_create_function() 例子

<?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语句执行的时候得到的结果是经过函数转换后的filename的值. $rows保存了程序执行的结果.

 

此外更方便的地方是在执行完查询之后,你不需要调用foreach()循环来获得查询的数据.

PHP 一打开数据库就注册了一个叫php的特别的自定义函数. 这个php 函数可以被任何PHP函数调用,而不需要先注册它.

 

直接调用 PHP 函数的例子

<?php
$rows
= sqlite_array_query($dbhandle, "SELECT php('md5', filename) from files");
?>

 

这个例子在数据库的每个filename列上调用md5()函数,然后把返回的结果的总和存入变量 $rows.

 

考虑到效率的原因, PHP 不会自动对你的自定义函数中的二进制数据进行编码或解码. 你需要自己对你的函数的二进制参数或返回值进行编码或解码. 你可以用一下两个函数来完成这项任务 sqlite_udf_encode_binary() sqlite_udf_decode_binary() .

当然我们并不建议您在自定义函数中处理二进制数据,除非您的程序不在乎执行的效率.

你可以用sqlite_create_function() sqlite_create_aggregate()来覆盖SQLite 原有的SQL函数.

(阅读次数:
上一篇:使用PySQLite连接SQLite遇到的问题与解决方法 下一篇:SQLite 、 PHP混合扩展编程
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
§最新评论
热点文章
·简单的在Java中使用SQLite
·C/C++中调用SQLITE3的基本
·PHP+SQLITE制作简单的视频
·DISQLite3 简介 SQLite de
·VB.NET 中使用 SQLite3 的
·SQLiteJDBC 100%纯JAVA的s
·如何在Windows下编译SQLit
·关于SQLite的一些简单介绍
·在VC6.0中使用C++访问sqli
·C/C++中调用SQLITE3的基本
·SQLite 与 PHP 结合开发(
·在VC6.0中使用C++访问sqli
·使用SQLite进行网站搜索
·SQLite ADO.NET 驱动(C#
·在.NET C#中使用sqlite
·python模块之sqlite数据库
·PHP中的SQlite数据库应用
·如何在PHP5中通过PDO连接S
·PHP中如何使用sqlite_crea
·SQLite 、 PHP混合扩展编
相关文章
·让你的PHP4也用上Sqlite3
·VB.NET 中使用 SQLite3 的
·C/C++中调用SQLITE3的基本
·python模块之sqlite数据库
·在.NET C#中使用sqlite
·用Ruby进行SQLite的开发指
·PHP5中的 sqlite_create_f
·SQLite ADO.NET 驱动(C#
·使用SQLite进行网站搜索
·如何在Windows下编译SQLit

版权Power by DedeCms   后台登陆
Copyright @ 2007