Wie hier erklärt:Schützt mysql_real_escape_string() VOLLSTÄNDIG vor SQL-Injection?
Basierend auf Ihrem Code-Snippet haben Sie die Datenbank zweimal verbunden.
$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);
Und Sie haben die Datenbank-Link-ID für :
nicht angegeben$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']);
Daher hat mysql_set_charset keine Auswirkung auf das bereitgestellte echte Escape $_POST
für Multibyte-Zeichen.
Vorschlag
- Entfernen Sie den zweiten
mysql_connect($db_host,$username,$password);
- fügen Sie explizit
$db_con
hinzu beim Ausführen vonmysql_real_escape_string