假设我已经按照以下方式设置了我的数据库以使用UTF-8(在MySQL中使用完整的4MB版本)
mysql_query("SET CHARACTER SET utf8mb4");
mysql_query("SET NAMES utf8mb4");
在将字符串放入 SQL 之前,我使用 mysql_real_escape_string 来转义不需要的字符(注意 - 我不是在寻求切换到 PDO 的建议,我想确定 mysql_real_escape_string 是否安全防止过长的 utf8 等问题)。
$input = mysql_real_escape_string($_POST['field']);
$sql = "SELECT * FROM `table` WHERE `header`='$input'";
在执行mysql_real_escape_string之前,我需要对$_POST['field']进行任何验证吗?例如,检查字符串是否有效的UTF-8编码,长度不超过限制,并且不包含无效字符序列等。还是直接使用mysql_real_escape_string就足够了?