Ошибка "Недопустимый ресурс ss_sqlsrv_stmt" при попытке использования функции php для возврата результата sqlsrv_query

Недавно я переключил приложение PHP с mssql на sqlsrv и хотел бы продолжить использование нескольких пользовательских функций для обработки всех моих запросов SQL. Я получаю ошибку

Предупреждение: sqlsrv_fetch_array(): 2 не является допустимым ресурсом ss_sqlsrv_stmt в...

при использовании следующей функции для обработки всех вызовов 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);
?>

1 ответ

Вы должны объявить $conn переменная как глобальная или попытаться получить данные внутри tko_query функция тела. когда tko_query заканчивается соединение закрыто, и вы не можете получить данные..

Другие вопросы по тегам