Function问题

原创
2016-06-23 14:20:09 649浏览

function PHP自定义函数 PHP


test("SELECT COUNT(name) FROM tb1 GROUP BY name");
test("SELECT COUNT(name) FROM tb2 GROUP BY name");
调用一个是没问题的,但两个以上就报错了,是为什么呢?

回复讨论(解决方案)

结束一次查询后,第二次要清理前面请求的结果

结束一次查询后,第二次要清理前面请求的结果 怎么清理前面请求的结果?

function test($sql){
require_once("../../config.php"); //已加载就不加载
$query = sqlsrv_query( $conn,$sql); //如果不加载(第二次执行时)$conn 不就不存在了吗?
....
}

老徐说的对,你的代码$conn要作为全局变量才行,不然二次调用$conn就不存在了
看看出错信息是否如此

另外,清理结果也是必需的,以前我就试过不清理导致两次结果交错混淆了
mysql是mysql_free_result(),你的代码看上去是sqlsever,不太清楚,估计是sqlsrv_free_stmt()
其他数据库一般都有类似函数

require_once("../../config.php"); 放在函数外面加载不行么

尽量不要在函数里引入文件,在调用函数的文件中引入文件

function test($sql){
require_once("../../config.php"); //已加载就不加载
$query = sqlsrv_query( $conn,$sql); //如果不加载(第二次执行时)$conn 不就不存在了吗?
....
}

老徐说的对,你的代码$conn要作为全局变量才行,不然二次调用$conn就不存在了
看看出错信息是否如此

另外,清理结果也是必需的,以前我就试过不清理导致两次结果交错混淆了
mysql是mysql_free_result(),你的代码看上去是sqlsever,不太清楚,估计是sqlsrv_free_stmt()
其他数据库一般都有类似函数 谢谢你们!!!在这里还想问个题外题,就是mssql_init这个函数,我把它换成 sqlsrv_init 就不行,是不是没有sqlsrv_init这个函数啊?那应该用哪个函数代替呢?

看手册,各家接口不同,不是说把函数名前缀换了就行的

看手册 http://php.chinaunix.net/manual/zh/ref.sqlsrv.php


你这个不行哦!!!

function test($sql){
require_once("../../config.php"); //已加载就不加载
$query = sqlsrv_query( $conn,$sql); //如果不加载(第二次执行时)$conn 不就不存在了吗?
....
}

把 echo $row[0];
改为 return $row[0];



你这个不行哦!!!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。