Search code examples
sql-servercodeigniter-3

sqlsrv_fetch_array() expects parameter 1 to be resource, object given


Good Day,

I was looking for the solution of this code. But unfortunately I couldn`t fix it hope someone can enlighten me on this matter.

function getCharactersBySerial($serial) 
{
    $charinfo = "";
    $i = 0;

    $CI =& get_instance();
    $CI->mssql = $CI->load->database( 'world', TRUE );
    $char_result = $CI->mssql->query("SELECT * FROM RF_World.dbo.tbl_base WHERE Serial= $serial and DCK='0'");
    while ($character = sqlsrv_fetch_array($char_result)) 
    {
        $charinfo['Serial'] = $character['Serial'];
        $charinfo['Name'] = $character['Name'];
        $charinfo['AccountSerial'] = $character['AccountSerial'];
        $i = 1;
        return $charinfo;
    }
    if ($i == 0 ) {
        return "None";
    }
}

and this is the other one they have both same errors

function getCharactersGuildBySerial($serial) 
{
    
    $charinfo = "";
    $i = 0;
    
    $CI =& get_instance();
    $CI->mssql = $CI->load->database( 'world', TRUE );
    $char_result = $CI->mssql->query("SELECT B.Name, L.id FROM tbl_base as B INNER JOIN tbl_general as G ON G.Serial = B.Serial INNER JOIN tbl_Guild as L ON L.Serial = G.GuildSerial WHERE B.Serial= $serial and B.DCK='0'");
    while ($character = sqlsrv_fetch_array($char_result)) 
    {
        $charinfo['GuildName'] = $character['id'];
        $charinfo['Name'] = $character['Name'];
        $i = 1;
        return $charinfo;
    }
    if ($i == 0 ) {
        $charinfo['Name'] = 'None';
        return $charinfo;
    }

}

Solution

  • I just fund out the error was because of my Condition and it only appears if the query doesn`t have a result. Please check below for the fix that I did:

     function getCharactersBySerial($serial) 
    {
        $charinfo = "";
        $i = 0;
    
        $CI =& get_instance();
        $CI->mssql = $CI->load->database( 'world', TRUE );
        $char_result = $CI->mssql->query("SELECT * FROM RF_World.dbo.tbl_base WHERE Serial= $serial and DCK='0'");
        if($char_result->num_rows()<=0){
            return 'None';
        }else{
            while ($character = sqlsrv_fetch_array($char_result)) 
            {
                $charinfo['Serial'] = $character['Serial'];
                $charinfo['Name'] = $character['Name'];
                $charinfo['AccountSerial'] = $character['AccountSerial'];
                $i = 1;
                return $charinfo;
            }
        }
    }
    

    and

     function getCharactersGuildBySerial($serial) 
    {
        
        $charinfo = "";
        $i = 0;
        
        $CI =& get_instance();
        $CI->mssql = $CI->load->database( 'world', TRUE );
        $char_result = $CI->mssql->query("SELECT B.Name, L.id FROM tbl_base as B INNER JOIN tbl_general as G ON G.Serial = B.Serial INNER JOIN tbl_Guild as L ON L.Serial = G.GuildSerial WHERE B.Serial= $serial and B.DCK='0'");
        if($char_result->num_rows()<=0){
                $charinfo['Name'] = 'None';
                return $charinfo;
        }else{
            while ($character = sqlsrv_fetch_array($char_result)) 
            {
                $charinfo['GuildName'] = $character['id'];
                $charinfo['Name'] = $character['Name'];
                $i = 1;
                return $charinfo;
            }
         }
    }