Maison > Article > développement back-end > Function问题
function PHP自定义函数 PHP
<?phpfunction test($sql){ require_once("../../config.php"); $query = sqlsrv_query($conn,$sql); if( $query === false) { die( print_r( sqlsrv_errors(), true) ); } $row = sqlsrv_fetch_array($query); echo $row[0];}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
<?phprequire_once("../../config.php");global $conn;$conn=$conn;function test($sql){ global $conn; $query = sqlsrv_query($conn,$sql); if( $query === false) { die( print_r( sqlsrv_errors(), true) ); } $row = sqlsrv_fetch_array($query); echo $row[0];}test("SELECT COUNT(name) FROM tb1 GROUP BY name");test("SELECT COUNT(name) FROM tb2 GROUP BY name");?>
<?phprequire_once("../../config.php");global $conn;$conn=$conn;function test($sql){ global $conn; $query = sqlsrv_query($conn,$sql); if( $query === false) { die( print_r( sqlsrv_errors(), true) ); } $row = sqlsrv_fetch_array($query); echo $row[0];}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 不就不存在了吗?
....
}
<?php $a = test("SELECT COUNT(name) FROM tb1 GROUP BY name");$b = test("SELECT COUNT(name) FROM tb2 GROUP BY name"); //为什么我这些写它就直接输出了呢?我想把值存在变量里,再用 echo 来输出。?>
把 echo $row[0];
改为 return $row[0];
<?phprequire_once("../../config.php");global $conn;$conn=$conn;function test($sql){ global $conn; $query = sqlsrv_query($conn,$sql); if( $query === false) { die( print_r( sqlsrv_errors(), true) ); } $row = sqlsrv_fetch_array($query); echo $row[0];}test("SELECT COUNT(name) FROM tb1 GROUP BY name");test("SELECT COUNT(name) FROM tb2 GROUP BY name");?>
<?phpglobal $conn;require_once("../../config.php");function test($sql){ global $conn; $query = sqlsrv_query($conn,$sql); if( $query === false) { die( print_r( sqlsrv_errors(), true) ); } $row = sqlsrv_fetch_array($query); echo $row[0];}test("SELECT COUNT(name) FROM tb1 GROUP BY name");test("SELECT COUNT(name) FROM tb2 GROUP BY name");?>