====== mysql_escape_string ======
unsigned long mysql_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)
==== description of mysql_escape_string ====
mysql_escape_string escape a mysql string\\
" will be escaped
; will not be escaped
! [[c:mysql:mysql.h:mysql_escape_string|mysql_escape_string]] is outdated use [[c:mysql:mysql.h:mysql_real_escape_string|mysql_real_escape_string]] instead !
#include /* including standard library */
#include
MYSQL *my;
MYSQL_RES *result;
int main( void ){
char host[20];
char user[20];
char pass[20];
// variables for escape
char from[90];
char query[90];
char to[90];
unsigned int length = 0;
my = mysql_init(NULL);
sprintf(host,"localhost");
sprintf(user,"username");
sprintf(pass,"password");
if (my == NULL ) {
printf("Cant initalisize MySQL\n");
return 1;
}
if( mysql_real_connect (my,host,user,pass,NULL,0,NULL,0) == NULL) {
printf("Error cant login\n");
} else {
printf("Login correct\n");
}
mysql_select_db(my, "test");
// e.g. what the user send ... in this case a SQL injection
sprintf(from, "user1 ; SELECT * FROM usertable WHERE userid = \"user2\"");
length = strlen(from);
mysql_escape_string(to, from, length);
// new escaped string
sprintf(query, "SELECT id FROM usertable WHERE user_id = \"%s\"; ",to);
printf("%s\n",query);
mysql_close(my);
return 0;
}
===== output of mysql_escape_string c example =====
Login correct
SELECT id FROM usertable WHERE user_id = "user1 ; SELECT * FROM usertable WHERE userid = \"user2\"";