Hello everybody,
I recently moved from PHP to C++ and started to learn MySQL DB connections. When I try to execute a query, mysql_use_result leads to access violation error and I can't figure out why. The code is:
The problem is login goes alright with no problems, but when choose_char() is called, I get access violation because res = mysql_use_result(db_connect); is NULL.Code:#include <iostream> #include <string> #include <cstdlib> #include <stdio.h> #include <time.h> #include <windows.h> #include <mysql.h> #pragma link "libmySQL.lib" MYSQL * db_connect; MYSQL_RES *res, *res1; MYSQL_ROW row; using namespace std; char *server = "localhost"; char *user = "root"; char *password = ""; char *database = "f"; char Query[256]; char input_user_login[32]; char* user_login; char input_user_password[32]; char* user_password; char* user_id; char* user_db_password; int CHAR_STR; int CHAR_HP; void choose_char() { sprintf(Query, "SELECT id, str, hp FROM characters WHERE user_id=%s",user_id); mysql_query(db_connect, Query); res = mysql_use_result(db_connect); while ((row = mysql_fetch_row(res)) != NULL) { cout << row[0] << " " << row[1] << " " << row[2] << "\n"; } cout << "Choose a character id:\n"; char character[32]; cin >> character; sprintf(Query, "SELECT str, hp FROM characters WHERE id=%s",character); if (mysql_query(db_connect, Query)) { cout << "Error getting the info \n"; } res = mysql_use_result(db_connect); row = mysql_fetch_row(res); CHAR_STR = atoi(row[0]); CHAR_HP = atoi(row[1]); mysql_free_result(res); mysql_close(db_connect); } void user_login_screen() { start: cin >> input_user_login; cin >> input_user_password; user_login = (char*)input_user_login; user_password = (char*)input_user_password; sprintf(Query, "SELECT id, password FROM users WHERE login=%s",user_login); mysql_query(db_connect, Query); res = mysql_use_result(db_connect); if ((row = mysql_fetch_row(res)) == NULL) { cout << "This user is not in the DB\n\n"; goto start; } user_id = row[0]; user_db_password = row[1]; if (strcmp(user_password, user_db_password) != 0) { cout << "Wrong login or password.\n\n"; goto start; } } int main() { db_connect = mysql_init(NULL); if (!mysql_real_connect(db_connect, server, user, password, database, 0, 0, 0)) { cout << "Could not connect to the DB"; } else { cout << "Connection succesful!\n"; } user_login_screen(); cout << "Log in successful\n"; Sleep(1000); choose_char(); return(0); }
Help please



LinkBack URL
About LinkBacks


