Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么;如果为空,则为“;显示搜索结果时不工作_Php_Mysql_Pdo - Fatal编程技术网

Php 为什么;如果为空,则为“;显示搜索结果时不工作

Php 为什么;如果为空,则为“;显示搜索结果时不工作,php,mysql,pdo,Php,Mysql,Pdo,我创建了一个搜索引擎,以便从MySQL中检索一些数据 我不知道为什么当我将字段留空时,它仍然显示数据库表的所有内容 猜猜看 谢谢,很抱歉代码太乱了 代码如下:如果$firstname为空,则SQL查询变为: SELECT * FROM users WHERE firstname LIKE '%%' %是一个通配符,因此它匹配所有内容。如果不希望这样做,则需要在执行查询之前检查$firstname是否为空。如果$firstname为空,则SQL查询变为: SELECT * FROM user

我创建了一个搜索引擎,以便从MySQL中检索一些数据

我不知道为什么当我将字段留空时,它仍然显示数据库表的所有内容

猜猜看

谢谢,很抱歉代码太乱了


代码如下:

如果
$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子句

祝你好运