Php 为什么;如果为空,则为“;显示搜索结果时不工作
我创建了一个搜索引擎,以便从MySQL中检索一些数据 我不知道为什么当我将字段留空时,它仍然显示数据库表的所有内容 猜猜看 谢谢,很抱歉代码太乱了Php 为什么;如果为空,则为“;显示搜索结果时不工作,php,mysql,pdo,Php,Mysql,Pdo,我创建了一个搜索引擎,以便从MySQL中检索一些数据 我不知道为什么当我将字段留空时,它仍然显示数据库表的所有内容 猜猜看 谢谢,很抱歉代码太乱了 代码如下:如果$firstname为空,则SQL查询变为: SELECT * FROM users WHERE firstname LIKE '%%' %是一个通配符,因此它匹配所有内容。如果不希望这样做,则需要在执行查询之前检查$firstname是否为空。如果$firstname为空,则SQL查询变为: SELECT * FROM user
代码如下:如果
$firstname
为空,则SQL查询变为:
SELECT *
FROM users
WHERE firstname LIKE '%%'
%
是一个通配符,因此它匹配所有内容。如果不希望这样做,则需要在执行查询之前检查$firstname
是否为空。如果$firstname
为空,则SQL查询变为:
SELECT *
FROM users
WHERE firstname LIKE '%%'
%
是一个通配符,因此它匹配所有内容。如果您不希望这样做,则需要在执行查询之前检查$firstname
是否为空。当您希望查找类似的内容而不是查找确切的内容时,使用LIKE子句代替=
。例如:
如果要查找名字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
));
当提交的firstname为空时,这将不会获取任何结果
LIKE子句在不使用“%”时等于WHERE子句
祝你好运 当你想找到相似的东西而不是确切的东西时,用LIKE子句代替
=
。例如:
如果要查找名字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
));
当提交的firstname为空时,这将不会获取任何结果
LIKE子句在不使用“%”时等于WHERE子句
祝你好运