0

如果我有一个用户的电子邮件地址为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。为什么更新失败?

4

2 回答 2

3

总是,总是,总是在将字符串添加到查询之前转义字符串。

"UPDATE subscriptions SET sent = '1' WHERE email ='" . $dbconn->real_escape_string($email) . "' Limit 1";

如果您使用的是原始 mysql API,那么您将mysql_real_escape_string使用$dbconn->real_escape_string

于 2013-07-24T23:37:56.167 回答
0

使用mysql_real_escape_string()

UPDATE `subscriptions` SET `sent` = '1' WHERE `email` ='" . mysql_real_escape_string($email) . "' Limit 1";

注意:mysql_* 已贬值。使用MySQLi

于 2013-07-24T23:41:45.950 回答