如果我有一个用户的电子邮件地址为d'anthony.fredrick@hotmail.com并使用 addlashes 将其设为 d\'anthony.fredrick@hotmail.com,则以下 SQL 语句将失败。
"UPDATE subscriptions SET sent = '1' WHERE email ='" . $email . "' Limit 1";
作为电子邮件地址的数据库是d\'anthony.fredrick@hotmail.com。为什么更新失败?
总是,总是,总是在将字符串添加到查询之前转义字符串。
"UPDATE subscriptions SET sent = '1' WHERE email ='" . $dbconn->real_escape_string($email) . "' Limit 1";
如果您使用的是原始 mysql API,那么您将mysql_real_escape_string
使用$dbconn->real_escape_string
UPDATE `subscriptions` SET `sent` = '1' WHERE `email` ='" . mysql_real_escape_string($email) . "' Limit 1";
注意:mysql_* 已贬值。使用MySQLi