Som förklara här:Skyddar mysql_real_escape_string() HELT mot SQL-injektion?
Baserat på ditt kodavsnitt har du anslutit databasen två gånger.
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name);
mysql_connect($db_host,$username,$password);
mysql_set_charset('utf8',$db_con);
Och du angav inte databaslänkidentifieraren för :
$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']);
Därför har mysql_set_charset ingen effekt på real escape som tillhandahålls$_POST
för tecken med flera byte.
Förslag
- ta bort den andra
mysql_connect($db_host,$username,$password);
- lägg till
$db_con
uttryckligen när du görmysql_real_escape_string