简体   繁体   English

尝试使用 php 函数返回 sqlsrv_query 结果时出现“不是有效的 ss_sqlsrv_stmt 资源”错误

[英]'Not a valid ss_sqlsrv_stmt resource' error when trying us a php function to return sqlsrv_query result

I have recently switched a PHP app from mssql to sqlsrv and would like to continue using a couple custom functions to handle all my SQL requests.我最近将一个 PHP 应用程序从 mssql 切换到 sqlsrv,并希望继续使用几个自定义函数来处理我的所有 SQL 请求。 I get an error我收到一个错误

Warning: sqlsrv_fetch_array(): 2 is not a valid ss_sqlsrv_stmt resource in...警告:sqlsrv_fetch_array(): 2 不是有效的 ss_sqlsrv_stmt 资源...

when using the following function to handle all sqlsrv_query() calls:使用以下函数处理所有 sqlsrv_query() 调用时:

<?php
function tko_query($sql)
{
    //Check for db connection
    $serverName = "server\sqlexpress";
    $connectionInfo = array( "Database"=>"db", "UID"=>"uid", "PWD"=>"pwd");
    $conn = sqlsrv_connect( $serverName, $connectionInfo );
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true));
    }

    return sqlsrv_query($conn,$sql, array(), array('Scrollable' => 'buffered'));
}


$sql = "SELECT * FROM jobs";
$stmt = tko_query($sql);

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) 
{
   echo $row['name']."<br />";
}

sqlsrv_free_stmt( $stmt);
?>

You should declare $conn variable as global or try to fetch data inside tko_query function body.您应该将$conn变量声明为全局变量或尝试在tko_query函数体内获取数据。 When tko_query ends the connection is closed and you cannot fetch data..tko_query结束时,连接关闭,您无法获取数据..

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM