ここで説明するように: mysql_real_escape_string()はSQLインジェクションから完全に保護しますか?
コードスニペットに基づいて、データベースを2回接続しました。
$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);
また、:
のデータベースリンク識別子を指定していません$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']);
したがって、mysql_set_charsetは、提供された実際のエスケープ$_POST
には影響しません。 マルチバイト文字の場合。
提案
- 2番目の
mysql_connect($db_host,$username,$password);
を削除します - 明示的に
$db_con
を追加しますmysql_real_escape_string
を実行する場合