MySQL'='运算符不返回结果

时间:2013-03-08 05:40:42

标签: php mysql sql

我有一个数据库,我有一个电子邮件字段,等等。

当我执行SELECT语句时:

SELECT * FROM table_name WHERE email = 'abcd@gmail.com';

...它返回一个空集,即使我可以看到表中的条目。

使用时,同样的说法有效:

SELECT * FROM table_name WHERE fname = 'abcd';

可能出现什么问题?

8 个答案:

答案 0 :(得分:2)

在您的查询中使用trim

SELECT * FROM table_name WHERE TRIM(`email`) = 'abcd@gmail.com';

http://sqlfiddle.com/#!2/90a95/3

答案 1 :(得分:0)

可能在条目中存在一些存储在MySQL中的空格,检查存储的电子邮件是否正好没有任何空格或意外字符。您也可以尝试以下方法来确认此

 SELECT * FROM table_name WHERE email LIKE '%abcd@gmail.com%'

答案 2 :(得分:0)

您确定没有额外的空间吗?试试LIKE子句

SELECT * FROM table_name WHERE email LIKE '%abcd@gmail.com%'

答案 3 :(得分:0)

条目是否包含额外的空格(标签等)? 您可以尝试:

SELECT * FROM table_name WHERE email LIKE 'abcd@gmail.com%'

SELECT * FROM table_name WHERE email LIKE '%abcd@gmail.com'

看看是否是这种情况

答案 4 :(得分:0)

在查询中使用trim。它不会考虑空格。

答案 5 :(得分:0)

试试这个并检查你是否收到abcd@gmail.com的结果。

  SELECT * 
  FROM table_name 
  WHERE email LIKE '%abcd@%'

答案 6 :(得分:0)

我在经过一次小小但意想不到的变化后开始工作。

我的旧PHP查询是这样的:     $res = mysql_query("SELECT * FROM books WHERE email = '$email'");

我新的和更改后的查询是这样的:     $res = mysql_query("SELECT * FROM books WHERE email = ' $email'");

出于某种原因,我认为mysql_real_escape_string()在开头添加了一个额外的空格,这在PHPMyAdmin中是不可见的。

答案 7 :(得分:-1)

尝试以下代码。认为它会对你有所帮助。

SELECT * FROM table_name WHERE `email' = 'abcd@gmail.com';