AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   SQL_FieldNameToNum cached value (https://forums.alliedmods.net/showthread.php?t=224022)

dFF 08-19-2013 09:18

SQL_FieldNameToNum cached value
 
For example i have:
PHP Code:

public MySqlFunctionFailStateHandle:QueryError[ ], ErrcodeData[ ], DataSize )
{
    switch( 
FailState )
    {
        case 
TQUERY_CONNECT_FAILED:
        {
           
set_fail_state"TQUERY_CONNECT_FAILED" )
        }
        
        case 
TQUERY_QUERY_FAILED:
        {
            
set_fail_state"TQUERY_QUERY_FAILED" )
        }
    }
    
    if( 
Errcode )
    {
        
set_fail_state"ERRCODE" )
    }

    new 
id
    id 
Data]
    
    if( ~
IsConnectedid ) )
        return 
PLUGIN_HANDLED
    
    
if( SQL_NumResultsQuery ) < )
    {
        
// do something else
    
}
    else
    {
        
g_iPlayerValueid ] = SQL_ReadResultQuerySQL_FieldNameToNumQuery"player_value" ) )
    }

    return 
PLUGIN_CONTINUE


will not better if i cached value for SQL_FieldNameToNum ? (for optimization) Example:
PHP Code:

public MySqlFunctionFailStateHandle:QueryError[ ], ErrcodeData[ ], DataSize )
{
    switch( 
FailState )
    {
        case 
TQUERY_CONNECT_FAILED:
        {
           
set_fail_state"TQUERY_CONNECT_FAILED" )
        }
        
        case 
TQUERY_QUERY_FAILED:
        {
            
set_fail_state"TQUERY_QUERY_FAILED" )
        }
    }
    
    if( 
Errcode )
    {
        
set_fail_state"ERRCODE" )
    }

    new 
id
    id 
Data]
    
    if( ~
IsConnectedid ) )
        return 
PLUGIN_HANDLED
    
    
if( SQL_NumResultsQuery ) < )
    {
        
// do something else
    
}
    else
    {
        static 
iValue
        
if( !iValue iValue SQL_FieldNameToNumQuery"player_value" )
        
        
g_iPlayerValueid ] = SQL_ReadResultQueryiValue )
    }

    return 
PLUGIN_CONTINUE


but i don't know why sometimes when used method 2 (with cached value iValue) i get error:
Code:

[MySQL] Invalid column: -1
[AMXX] Run time error 10: native error (native "SQL_ReadResult")

Thanks.

aaarnas 08-19-2013 15:40

Re: SQL_FieldNameToNum cached value
 
Best:
SELECT player_value FROM ...

g_iPlayerValue[ id ] = SQL_ReadResult(Query, 0)

Just write all needed columns in query and then just type column number. Starts from 0.
SQL_FieldNameToNum is needed to use when using '*' for columns (All columns), and you don't know order. Or for removing hardcoding.


All times are GMT -4. The time now is 16:00.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.