<?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");?>
test("SELECT COUNT(name) FROM tb1 GROUP BY name");
test("SELECT COUNT(name) FROM tb2 GROUP BY name");
调用一个是没问题的,但两个以上就报错了,是为什么呢?functionPHP自定义函数PHP

解决方案 »

  1.   

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

  2.   

    老徐说的对,你的代码$conn要作为全局变量才行,不然二次调用$conn就不存在了
    看看出错信息是否如此另外,清理结果也是必需的,以前我就试过不清理导致两次结果交错混淆了
    mysql是mysql_free_result(),你的代码看上去是sqlsever,不太清楚,估计是sqlsrv_free_stmt()
    其他数据库一般都有类似函数
      

  3.   

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

  4.   


    谢谢你们!!!在这里还想问个题外题,就是mssql_init这个函数,我把它换成 sqlsrv_init 就不行,是不是没有sqlsrv_init这个函数啊?那应该用哪个函数代替呢?
      

  5.   

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

  6.   


    <?php
    require_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");
    ?>
      

  7.   

    <?php 
    $a = test("SELECT COUNT(name) FROM tb1 GROUP BY name");
    $b = test("SELECT COUNT(name) FROM tb2 GROUP BY name"); 
    //为什么我这些写它就直接输出了呢?我想把值存在变量里,再用 echo 来输出。
    ?>
      

  8.   

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

  9.   

    你这个不行哦!!!
    <?php
    global $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");
    ?>