MySQL INSERT INTO
#1

So yeah, I just converted to MySQL. Here is my register dialog:

pawn Код:
if(dialogid == 1)
    {
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "You are not registered", "Type your password below", "Register"," ");
        new pname[24],ip[50],escname[24],escpass[100],Query[300];
        GetPlayerName(playerid, pname, sizeof(pname));
        mysql_real_escape_string(pname,escname);
        mysql_real_escape_string(inputtext,escpass);
        GetPlayerIp(playerid,ip,50);
        format(Query,300,"INSERT INTO `playerinfo` (`user`,`password`,`IP`,`kills`,`deaths`,`score`,`cash`,`level`,`donor`) VALUES ('%s', '%s', '%s',0,0,0,0,0,0)",escname,escpass,ip);
        mysql_query(Query);
        SendClientMessage(playerid,limegreen,"You have successfully registered!");
        PInfo[playerid][Regged] = 1;
        PInfo[playerid][Logged] = 1;
    }
If I register from the server, it doesn't save. However, when I manually make an account in phpmyadmin and try to login, it works perfectly fine. What is wrong with my Query? Why won't it insert?
Reply
#2

have you tried turning debug on, and run the query again. Then post the log here

And im pretty sure that you escape the WHOLE string, not just the password. Like escape the whole query.
Reply
#3

As Hal requested, run debug with the plugin, you probably don't establish connection with the database for whatever reason. The only other reason I could see that may be causing your problem is your query isn't long enough (though I doubt it), assuming you're using the whole length of the password array you created (100).

Also, here are a few pointers:
  • You don't need to use ` around fields
  • You should look into default values for fields. It would stop the unnecessary insertion of 0's
  • You should use MAX_PLAYER_NAME definition for the name arrays. It's just nice to follow it in case it changes.
  • The maximum length of an IP address is 16; reduce your array that stores the IP to 16, 50 is unnecessary.
Reply
#4

Alright, here is my whole debug:

PHP код:
[19:09:11]  
[
19:09:11] ---------------------------
[
19:09:11MySQL Debugging activated (05/19/11)
[
19:09:11] ---------------------------
[
19:09:11]  
[
19:09:33] >> mysql_real_escape_stringConnection handle)
[
19:09:33CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[
19:09:33] >> mysql_queryConnection handle)
[
19:09:33CMySQLHandler::Query(SELECT FROM `playerinfoWHERE `user` = 'Test') - Successfully executed.
[
19:09:33] >> mysql_store_resultConnection handle)
[
19:09:33CMySQLHandler::StoreResult() - Result was stored.
[
19:09:33] >> mysql_num_rowsConnection handle)
[
19:09:33CMySQLHandler::NumRows() - Returned 0 row(s)
[
19:09:33] >> mysql_num_rowsConnection handle)
[
19:09:33CMySQLHandler::NumRows() - Returned 0 row(s)
[
19:09:45] >> mysql_real_escape_stringConnection handle)
[
19:09:45CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[
19:09:45] >> mysql_real_escape_stringConnection handle)
[
19:09:45CMySQLHandler::EscapeString(testpassword); - Escaped 12 characters to testpassword.
[
19:09:45] >> mysql_queryConnection handle)
[
19:09:45CMySQLHandler::Query(INSERT INTO `playerinfo` (`user`,`password`,`IP`,`kills`,`deaths`,`score`,`cash`,`level`,`donor`) VALUES ('Test''testpassword''127.0.0.1',0,0,0,0,0,0)) - An error has occured. (Error ID1054Unknown column 'cash' in 'field list')
[
19:09:56] >> mysql_real_escape_stringConnection handle)
[
19:09:56CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[
19:09:56] >> mysql_queryConnection handle)
[
19:09:56CMySQLHandler::Query(UPDATE `playerinfoSET `score` = '0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[
19:09:56] >> mysql_free_resultConnection handle)
[
19:09:56CMySQLHandler::FreeResult() - Result was successfully free'd.
[19:09:56] >> mysql_real_escape_string( Connection handle: 1 )
[19:09:56] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:09:56] >> mysql_query( Connection handle: 1 )
[19:09:56] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:09:56] >> mysql_free_result( Connection handle: 1 )
[19:09:56] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:00] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:00] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:00] >> mysql_query( Connection handle: 1 )
[19:10:00] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:00] >> mysql_free_result( Connection handle: 1 )
[19:10:00] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:00] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:00] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:00] >> mysql_query( Connection handle: 1 )
[19:10:00] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:00] >> mysql_free_result( Connection handle: 1 )
[19:10:00] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:02] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:02] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:02] >> mysql_query( Connection handle: 1 )
[19:10:02] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:02] >> mysql_free_result( Connection handle: 1 )
[19:10:02] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:02] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:02] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:02] >> mysql_query( Connection handle: 1 )
[19:10:02] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:02] >> mysql_free_result( Connection handle: 1 )
[19:10:02] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:03] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:03] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:03] >> mysql_query( Connection handle: 1 )
[19:10:03] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:03] >> mysql_free_result( Connection handle: 1 )
[19:10:03] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:03] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:03] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:03] >> mysql_query( Connection handle: 1 )
[19:10:03] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:03] >> mysql_free_result( Connection handle: 1 )
[19:10:03] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:09] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:09] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:09] >> mysql_query( Connection handle: 1 )
[19:10:09] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:09] >> mysql_free_result( Connection handle: 1 )
[19:10:09] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:09] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:09] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:09] >> mysql_query( Connection handle: 1 )
[19:10:09] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '0' WHERE `user` = 'Test') - Successfully executed.
[19:10:09] >> mysql_free_result( Connection handle: 1 )
[19:10:09] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:11] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:11] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:11] >> mysql_query( Connection handle: 1 )
[19:10:11] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '4' WHERE `user` = 'Test') - Successfully executed.
[19:10:11] >> mysql_free_result( Connection handle: 1 )
[19:10:11] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:11] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:11] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:11] >> mysql_query( Connection handle: 1 )
[19:10:11] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '4' WHERE `user` = 'Test') - Successfully executed.
[19:10:11] >> mysql_free_result( Connection handle: 1 )
[19:10:11] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:13] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:13] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:13] >> mysql_query( Connection handle: 1 )
[19:10:13] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '5' WHERE `user` = 'Test') - Successfully executed.
[19:10:13] >> mysql_free_result( Connection handle: 1 )
[19:10:13] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:13] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:13] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:13] >> mysql_query( Connection handle: 1 )
[19:10:13] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '5' WHERE `user` = 'Test') - Successfully executed.
[19:10:13] >> mysql_free_result( Connection handle: 1 )
[19:10:13] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:16] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:16] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:16] >> mysql_query( Connection handle: 1 )
[19:10:16] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '5' WHERE `user` = 'Test') - Successfully executed.
[19:10:16] >> mysql_free_result( Connection handle: 1 )
[19:10:16] CMySQLHandler::FreeResult() - The result is already empty.
[19:10:16] >> mysql_real_escape_string( Connection handle: 1 )
[19:10:16] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:10:16] >> mysql_query( Connection handle: 1 )
[19:10:16] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '0', `kills` = '0', `deaths` = '0',`level` = '7', `donor` = '5' WHERE `user` = 'Test') - Successfully executed.
[19:10:16] >> mysql_free_result( Connection handle: 1 )
[19:10:16] CMySQLHandler::FreeResult() - The result is already empty.
[19:11:52] >> mysql_real_escape_string( Connection handle: 1 )
[19:11:52] CMySQLHandler::EscapeString(Test); - Escaped 4 characters to Test.
[19:11:52] >> mysql_query( Connection handle: 1 )
[19:11:52] CMySQLHandler::Query(UPDATE `playerinfo` SET `score` = '
0',`money` = '-1500', `kills` = '0', `deaths` = '3',`level` = '7', `donor` = '5' WHERE `user` = 'Test') - Successfully executed.
[19:11:52] >> mysql_free_result( Connection handle: 1 )
[19:11:52] CMySQLHandler::FreeResult() - The result is already empty. 
EDIT: Oh shit, found out! I stated in the Query "cash" not "money". Ah, retarded me..
Reply
#5

Your error from the debug log says it all; your table isn't constructed correctly. The order you are trying to insert into the database may be incorrect.

Код:
[19:09:45] CMySQLHandler::Query(INSERT INTO `playerinfo` (`user`,`password`,`IP`,`kills`,`deaths`,`score`,`cash`,`level`,`donor`) VALUES ('Test', 'testpassword', '127.0.0.1',0,0,0,0,0,0)) - An error has occured. (Error ID: 1054, Unknown column 'cash' in 'field list')
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)