new nombre[MAX_PLAYER_NAME], query[1024], resultado[1024];
GetPlayerName(playerid, nombre, sizeof(nombre));
format(query, sizeof(query), "SELECT * FROM Usuarios WHERE Nombre = '%s'", nombre);
mysql_query(query);
mysql_store_result();
if (mysql_num_rows() != 0)
{
// Si el usuario esta registrado
SendClientMessage(playerid, -1, "Esta registrado");
}
else
{
// Si el usuario no esta registrado
ShowPlayerDialog(playerid, registro, DIALOG_STYLE_PASSWORD, "Registro", "Coloque su contraseсa para crear su cuenta", "Registrar", "Cancelar");
}
mysql_debug(1);
|
Buenas, bueno pues e estado desarollando un registro mysql pero tengo un error, tengo puesto que si la cuenta existe te mande un mensaje y si no esta registrada que te lanze el dialogo para registrarse, os dejo el codigo a ver si me podeis ayudar.
Код:
new nombre[MAX_PLAYER_NAME], query[1024], resultado[1024];
GetPlayerName(playerid, nombre, sizeof(nombre));
format(query, sizeof(query), "SELECT * FROM Usuarios WHERE Nombre = '%s'", nombre);
mysql_query(query);
mysql_store_result();
if (mysql_num_rows() != 0)
{
// Si el usuario esta registrado
SendClientMessage(playerid, -1, "Esta registrado");
}
else
{
// Si el usuario no esta registrado
ShowPlayerDialog(playerid, registro, DIALOG_STYLE_PASSWORD, "Registro", "Coloque su contraseсa para crear su cuenta", "Registrar", "Cancelar");
}
|
new query[200], pname[24];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "SELECT * FROM `usuarios` WHERE usuario = '%s' LIMIT 1", pname);
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows();
if(!rows)
{
// Si el usuario no esta registrado
ShowPlayerDialog(playerid, registro, DIALOG_STYLE_PASSWORD, "Registro", "Coloque su contraseсa para crear su cuenta", "Registrar", "Cancelar");
}
if(rows == 1)
{
// Si el usuario esta registrado
SendClientMessage(playerid, -1, "Esta registrado");
}
mysql_free_result();
|
Prueba asi:
pawn Код:
|
[17:32:35] [17:32:35] --------------------------- [17:32:35] MySQL Debugging activated (09/29/12) [17:32:35] --------------------------- [17:32:35] [17:32:35] >> mysql_ping( Connection handle: 1 ) [17:32:35] CMySQLHandler::Ping() - Connection is still alive. [17:32:35] [17:32:35] --------------------------- [17:32:35] MySQL Debugging activated (09/29/12) [17:32:35] --------------------------- [17:32:35] [17:33:00] >> mysql_query( Connection handle: 1 ) [17:33:00] CMySQLHandler::Query(SELECT * FROM `members` WHERE member_name = 'Zarco' LIMIT 1) - Successfully executed. [17:33:00] >> mysql_store_result( Connection handle: 1 ) [17:33:00] CMySQLHandler::StoreResult() - Result was stored. [17:33:00] >> mysql_num_rows( Connection handle: 1 ) [17:33:00] CMySQLHandler::NumRows() - Returned 1 row(s) [17:33:00] >> mysql_free_result( Connection handle: 1 ) [17:33:00] CMySQLHandler::FreeResult() - Result was successfully free'd.
|
Por lo que vн no hay ningъn problema en el momento de la ejecuciуn de la consulta, mysql_num_rows te devuelve 1, significa que el usuario fue encontrado en la tabla de la base de datos, es decir, estб registrado.
Me gustarнa saber cual es el problema especнficamente, їmysql_num_rows no devuelve el valor bien? |
//En algъn lugar
new szQuery[128], szName[MAX_PLAYER_NAME];
GetPlayerName(playerid, szName, sizeof szName);
format(szQuery, sizeof szQuery, "SELECT * FROM Usuarios WHERE Nombre = '%s'", szName);
mysql_function_query(1, szQuery, true, "OnPlayerExists", "i", playerid);
//La callback que va a ser llamada cuando el resultado de la consulta estй listo
forward OnPlayerExists(playerid);
public OnPlayerExists(playerid)
{
new iRows, iFields;
cache_get_data(iRows, iFields);
if(iRows)
{
SendClientMessage(playerid, -1, "Esta registrado");
}
else
{
ShowPlayerDialog(playerid, registro, DIALOG_STYLE_PASSWORD, "Registro", "Coloque su contraseсa para crear su cuenta", "Registrar", "Cancelar");
}
return 1;
}
|
Es un bug que a mн tambiйn me sucedнa, lo que hice fue actualizar a la R7 y utilizar una nueva funciуn de esta:
pawn Код:
|
|
Serнa bueno que postearas los logs pero con el plugin actualizado.
|
[02:46:36] >> mysql_connect(localhost, root, samp, ******) on port 3306 [02:46:36] CMySQLHandler::CMySQLHandler() - constructor called. [02:46:36] CMySQLHandler::CMySQLHandler() - Connecting to "localhost" | DB: "samp" | Username: "root" [02:46:36] CMySQLHandler::Connect() - Connection was successful. [02:46:36] CMySQLHandler::Connect() - Auto-Reconnect has been enabled. [02:46:36] [02:46:36] ** MySQL Debugging enabled (09/30/12) [02:46:36] [02:46:36] >> mysql_ping( Connection handle: 1 ) [02:46:36] CMySQLHandler::Ping() - Connection is still alive. [02:46:36] [02:46:36] ** MySQL Debugging enabled (09/30/12) [02:46:36] [02:47:10] >> mysql_query_callback( Connection handle: 1 ) [02:47:10] Passing query SELECT * FROM Usuarios WHERE Nombre = 'Zarco' | i [02:47:10] CMySQLHandler::ProcessQueryThread() - Error will be triggered to OnQueryError()