单引号导致更新SQL失败

时间:2013-07-24 23:36:41

标签: php mysql

如果我的用户电子邮件地址为 d'anthony.fredrick@hotmail.com ,我会使用addslashes将其设为 d \'anthony.fredrick@hotmail.com ,以下SQL语句失败。

"UPDATE subscriptions SET sent = '1' WHERE email ='" . $email . "' Limit 1";

作为电子邮件地址的数据库是 d \'anthony.fredrick@hotmail.com 。为什么UPDATE会失败?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用mysql_real_escape_string()

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

注意:mysql_ *已被折旧。使用MySQLi