SQL Problem
#1

What is wrong this this code? everytime I search player name, it always returns can't find any even tho if I check the database, there is some players with same gpci.

PHP код:
COMMAND:omatch(playeridparams[])
{
    if(!
PlayerInfo[playerid][power]) return SendClientError(playeridCANT_USE_CMD);
    new 
emri[32];
    if(
sscanf(params"s"emri)) return SCP(playerid"<Player_Name>");
    new 
sql[164], gpcija[64], Cache:result;
    
mysql_format(sqldbsqlsizeof sql"SELECT `PlayerInfo` FROM `gpci` WHERE `PlayerName` = '%s'"emri);
    
mysql_query(sqldbsql);
    
cache_get_field_content(0"gpci"gpcija);
    
mysql_format(sqldbsqlsizeof sql"SELECT * FROM `PlayerInfo` WHERE `gpci` = '%s'"gpcija);
    
result mysql_query(sqldbsql);
    new 
rows cache_num_rows();
    if(
rows)
    {
        new 
iStr128 ];
        for(new 
irowsi++)
        {
            new 
emri1[128];
            
cache_get_field_content(i"PlayerName"emri1);
            if(
strcmp(emri1emri))
            {
                
format(iStrsizeof(iStr), "{ea8080}[AC]:{f3c0c0} %s matches with %s"emri1emri);
                
SendClientMessage(playerid, -1iStr);
            }
        }
    }
    else
    {
        
SendClientMessage(playerid, -1"{ea8080}[AC]:{f3c0c0} Can't find any linked!");
    }
    
cache_delete(result);
    return 
1;

Reply
#2

You try to fetch the field gpci although you only selected the column PlayerInfo

Several other things
  • Reduce the two queries to one with join
  • If player names are unique, just select from PlayerInfo directly
  • The strcmp line is wrong, currently it checks for "not equal"
  • Use threaded queries if available
Reply
#3

I make few changes, now it shows players name, but it shows randomly..

Like Player 1 have GPCI A12B and Player 2 have GPCI A13B and if I search for Player 1 GPCI it says it linked with Player 2 but it obvious both gpci is different.
Reply
#4

You could print the player names to check manually but it is most probably a mistake in the if statement

Quote:
Originally Posted by Nero_3D
Посмотреть сообщение
  • The strcmp line is wrong, currently it checks for "not equal"
Reply
#5

Alright thanks
Reply
#6

There's also the thing that this is why gpci isn't really used as a sole indicator of whether someone is someone else.

It's known to produce duplicates, because of how it works, and it can be changed using mods.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)