bool MySql_Register(const char* id, const char* pw) {
MYSQL* connect_ptr;
connect_ptr = mysql_init(NULL);
if(!mysql_real_connect(connect_ptr, HOST, USER, PW, NAME, 3306, NULL, 0)) {
fprintf(stderr, "%s ",mysql_error(connect_ptr));
exit(1);
}
char sql[256] = {0};
sprintf(sql, "select * from user where id='%s'", id);
mysql_query(connect_ptr, sql);
int len = mysql_affected_rows(connect_ptr);
if(len == 1)
return PK_ID_OVERLAP;
sprintf(sql, "insert into user (id, pw) values ('%s', '%s')", id, pw);
mysql_query(connect_ptr, sql);
len = mysql_affected_rows(connect_ptr);
if(len == 1)
return true;
else
return false;
}
mysql_connect
und mysql_query
läuft sehr gut.
, aber mysql_affected_rows
Rückgabewert -1.
Ich weiß nicht, wo das Problem ist ....Warum hat die Funktion mysql den Wert -1 in C++ zurückgegeben?
C ist nicht das gleiche wie C++ .. bitte wählen Sie eine von ihnen. – jboockmann
Es gibt einen furchterregenden Mangel an korrektem SQL-Entweichen, und dieses Ding ist wahrscheinlich ein riesiges [SQL-Injektionsloch] (http://bobby-tables.com/). Das sehe ich nicht oft im C-Code. – tadman
Ich denke, -1 ist korrekt für die Select-Abfrage, ein SELECT-Befehl hat keine Auswirkungen auf Zeilen, so sollte es eine andere Funktion erhalten die Anzahl der Zeilen von connect_ptr, die Einfügung sollte eigentlich ein gültiges Ergebnis zurückgeben, aber Sie überprüft, ob die Zeile war tatsächlich eingefügt? – Marco