我正在创建一个搜索引擎,以便从 MySQL 检索一些数据。
我不知道为什么当我将该字段留空时,它仍然显示数据库表的所有内容。
有什么猜测吗?
谢谢您,并对困惑的代码表示歉意。
最佳答案
当您想要查找相似的内容而不是查找确切的内容时,使用
LIKE 子句而不是 =
。示例:
如果您想查找雷的名字,
SELECT first_name from users WHERE firstname = "Ray";
如果你想查找包含 ray 的名字,
SELECT first_name from users WHERE firstname LIKE "%ray%";
现在,在您的情况下,由于名字为空,因此查询变为
SELECT * FROM users WHERE firstname LIKE '%%'
因此它匹配所有内容并返回所有值。
代码更正:
因此,如果您不想在名字为空时检索所有值,则可以对代码执行以下操作
if(!empty($firstname))
{
$firstname = "%".$firstname."%";
}
并将此代码更改为
$statement->execute(array(
':firstname' => $firstname
));
当提交的名字为空时,这不会获取任何结果
LIKE clause is equal to WHERE clause when used without '%'
.
祝你好运!!!
关于php - 为什么 "if empty"在显示搜索结果时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126888/