我一直在尝试使用以下语句查询电子邮件地址,但是在尝试成功逃避字符串数小时后,我接受了失败。
我使用的查询是:SELECT id, email FROM user WHERE email = '$email'
这给了我一个错误:
MySQL错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“@ gmail.com”附近使用正确的语法
我确信这很简单......我似乎无法在任何有效的地方找到答案。
更新#1
我一直使用的代码是:
$email = "abc@gmail.com";
$sql = "SELECT id, email FROM user WHERE email = '$email'";
$result = mysql_query($sql) or die('Unable to connect: '.mysql_error());
更新#2
该电子邮件来自Facebook连接API。
答案 0 :(得分:6)
这可能是因为您从Facebook connect获得的电子邮件地址包含引号,例如
之类的东西"Harry"@gmail.com
"Harry@gmail.com"
从网络服务(或其他任何地方)提取数据时,您需要来转义数据以防止SQL injection,并在您的情况下出现乱码。
在你的情况下:
$email = mysql_real_escape_string($email);