我一直在尝试使用以下语句查询电子邮件地址,但是在尝试成功转义字符串几个小时后,我已经接受了失败。
我使用的查询是:SELECT id, email FROM user WHERE email = '$email'
这给了我一个错误:
MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@gmail.com' at line 1
我确信这很简单..我似乎无法在任何有效的地方找到答案。
更新#1
我一直使用的代码是:
$email = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3b5a59587b5c565a525715585456" rel="noreferrer noopener nofollow">[email protected]</a>";
$sql = "SELECT id, email FROM user WHERE email = '$email'";
$result = mysql_query($sql) or die('Unable to connect: '.mysql_error());
更新#2
电子邮件来自 Facebook connect API。
最佳答案
这可能是因为您从 Facebook 连接获得的电子邮件地址包含引号,例如类似的东西
"Harry"@gmail.com
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f6be9784848fb6919b979f9ad895999b" rel="noreferrer noopener nofollow">[email protected]</a>"
从 Web 服务(或其他任何地方)提取数据时,您需要转义数据以防止 SQL injection ,以及像您的情况一样的乱码查询。
就您而言:
$email = mysql_real_escape_string($email);
关于PHP/MySQL 查询电子邮件地址时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4042632/