gpt4 book ai didi

php - MySQL where 子句等于任何东西 (SELECT * WHERE col = ANY_VALUE)

转载 作者:IT老高 更新时间:2023-10-28 23:51:13 27 4
gpt4 key购买 nike

我想在 MySQL 中创建一个具有可选值的查询。当指定值时,查询将按该值过滤,当值不是时返回所有行。想法是这样的:

public function doQuery($item = 'ANY_VALUE') {
$query = "SELECT * FROM table WHERE item = ?";
db->fetchAll($query,array($item))
...
}

doQuery(); // Returns everything
doQuery($item='item1'); // Returns only rows where item = 'item1'

有没有一种简单的方法可以做到这一点,而无需根据 $item 的值创建两个查询字符串?

最佳答案

据我所知,不存在这样的“任何”占位符。

如果你可以使用 LIKE,你可以这样做

SELECT * FROM table WHERE item LIKE '%'

如果你可以附加一个条件,你可以像这样使 item 子句无效:

SELECT * FROM table WHERE item = ? OR 1=1

(但在您的示例中不起作用,因为您将“item”作为参数传递)

这就是我能看到的所有选项 - 使用两个查询可能是最简单的,在第二个查询中完全删除 WHERE 子句。

这可能会起作用,但我*不确定从数据库的角度来看这是否是个好主意。

public function doQuery($item = 'ANY_VALUE') {
$query = "SELECT * FROM table WHERE item = ? OR 1 = ?";
db->fetchAll($query,array($item, ($item == 'ANY_VALUE' ? 1 : 0))
...
}

关于php - MySQL where 子句等于任何东西 (SELECT * WHERE col = ANY_VALUE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com