我有一个数据库,其中有一个电子邮件字段等。
当我执行 SELECT 语句时:
SELECT * FROM table_name WHERE email = 'abcd@gmail.com';
...它返回一个空集,即使我可以看到表中的条目。
当我使用相同的语句时:
SELECT * FROM table_name WHERE fname = 'abcd';
可能出了什么问题?
trim
在您的查询中使用
SELECT * FROM table_name WHERE TRIM(`email`) = 'abcd@gmail.com';
经过一个小但意外的改变后,我让它工作了。
我的旧 PHP 查询是这样的:
$res = mysql_query("SELECT * FROM books WHERE email = '$email'");
我的新查询和更改查询如下所示:
$res = mysql_query("SELECT * FROM books WHERE email = ' $email'");
出于某种原因,我认为 mysql_real_escape_string() 在开头添加了一个额外的空格,这在 PHPMyAdmin 中是不可见的。
也许存储在 MySQL 中的条目中有一些空格,检查存储的电子邮件是否与没有任何空格或意外字符的完全一样。您也可以尝试以下方法来确认这一点
SELECT * FROM table_name WHERE email LIKE '%abcd@gmail.com%'
你确定你没有额外的空间?尝试使用LIKE
子句
SELECT * FROM table_name WHERE email LIKE '%abcd@gmail.com%'
该条目是否包含额外的空格(制表符等)?您可以尝试:
SELECT * FROM table_name WHERE email LIKE 'abcd@gmail.com%'
和
SELECT * FROM table_name WHERE email LIKE '%abcd@gmail.com'
看看是不是这样
在查询中使用修剪。它不会考虑空格。
试试这个并检查您是否获得 abcd@gmail.com 的结果。
SELECT *
FROM table_name
WHERE email LIKE '%abcd@%'
try below code. thinks it will help you.
SELECT * FROM table_name WHERE `email' = 'abcd@gmail.com';