如果我的用户电子邮件地址为 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会失败?
答案 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)
UPDATE `subscriptions` SET `sent` = '1' WHERE `email` ='" . mysql_real_escape_string($email) . "' Limit 1";
注意:mysql_ *已被折旧。使用MySQLi