我正在创建一个搜索引擎,以便从MySQL中检索一些数据。
我不知道为什么当我将该字段留空时,它仍显示数据库表的所有内容。
任何猜测?
谢谢,对于凌乱的代码感到抱歉。
答案 0 :(得分:1)
如果$firstname
为空,则SQL查询变为:
SELECT *
FROM users
WHERE firstname LIKE '%%'
%
是一个通配符,所以它匹配所有内容。如果您不想这样,则需要在执行查询之前检查$firstname
是否为空。
答案 1 :(得分:1)
LIKE子句而不是where子句。例如:
如果你想找到名字Ray ,
SELECT first_name from users WHERE firstname = "Ray";
如果要查找包含光线的名字,
SELECT first_name from users WHERE firstname LIKE "%ray%";
现在,在您的情况下,由于firstname为空,查询变为
SELECT * FROM users WHERE firstname LIKE '%%'
所以它匹配所有内容并返回所有值。
代码更正:
因此,如果您不希望在第一个名称为空时检索所有值,则可以对代码执行以下操作
if(!empty($firstname))
{
$firstname = "%".$firstname."%";
}
并将此代码更改为
$statement->execute(array(
':firstname' => $firstname
));
当提交的名字为空
时,这不会获取任何结果LIKE子句在没有'%'
的情况下使用时等于WHERE子句
祝你好运!!!