在php 扩展中 调用mysql

call_user_function_ex是php提供的一个c api,具体的参数也没有一个官方的文档。我给你一个例子并稍微说明一下吧。

C/C++ code

zval *fname;


zval **args[1];
zval *retval;
zval *arg1;
args[0]=&arg1;
int arg_count=1;
call_user_function_ex(EG(function_table), NULL, fname, &retval, arg_count, args, 0,NULL TSRMLS_CC);

fname就是函数名,retval就是返回值,arg_count就是传入的参数数目,args就是参数。第一个参数一般来说都是固定的,第二个参数除非是调用类方法,否则为NULL。

call_user_function_ex的作用是在c层面呼叫php的函数。其实,既然你都能调用PHP的mysql函数了,那么libmysql肯定也是编译进去了,这时候直接用libmysql的函数即可。

至于libmysql的用法么,我先问你,你以前写过调用第三方库的c程序吗?如果没写过,你应该先去了解一下如何在C程序里使用别人的库。

mysql.h 是MySQL(libmysql也在里面)附带的,你必须去mysql的官方站点下。#include <mysql.h> 的意思是说从$PATH里找这个h文件,你也可以以普通路径的形式调用,例如#include "../MySQL/mysql.h"