Seperti yang dijelaskan di sini:Apakah mysql_real_escape_string() SEPENUHNYA melindungi terhadap injeksi SQL?
Berdasarkan cuplikan kode Anda, Anda telah menghubungkan database dua kali.
$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);
Dan Anda tidak memberikan pengenal tautan basis data untuk :
$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']);
Oleh karena itu, mysql_set_charset tidak berpengaruh pada pelarian nyata yang disediakan$_POST
untuk karakter multi-byte.
Saran
- hapus
mysql_connect($db_host,$username,$password);
kedua - tambahkan
$db_con
secara eksplisit saat melakukanmysql_real_escape_string