gpt4 book ai didi

php - 带有连接的搜索查询在搜索字符串为空时显示所有行

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:09 27 4
gpt4 key购买 nike

我有一个查询要在两个表中搜索职位空缺。

此查询的变量与具有多个输入/选择的表单一起发送。一个是职位空缺标题的文本输入,另一个是包含职位空缺所属所有类别的下拉列表。

当我将文本输入留空并仅选择一个类别时,我会得到所有职位空缺,而不仅仅是所选类别中的职位空缺。

我的查询:

$functie = $_POST['functie'];
$branche = $_POST['branche'];
$regio = $_POST['regio'];

$search = "
SELECT cnt.title, cnt.alias, cnt.images, cnt.introtext, cnt.catid, cat.title, cat.alias
FROM snm_content cnt
LEFT JOIN snm_categories cat
ON cat.id = cnt.catid
WHERE ('".$functie."' ='' OR cnt.title LIKE '%".$functie."%')
OR ('".$branche."' ='' OR cat.title LIKE '%".$branche."%')
";

如果我在不输入文本输入的情况下回显查询,这就是我得到的:

SELECT cnt.title, cnt.alias, cnt.images, cnt.introtext, cnt.catid, cat.title, cat.alias
FROM snm_content cnt
LEFT JOIN snm_categories cat
ON cat.id = cnt.catid
WHERE ('' ='' OR cnt.title LIKE '%%')
OR ('logistiek' ='' OR cat.title LIKE '%logistiek%')

snm_content 是职位空缺,snm_categories 是类别。

如何只显示属于所选类别的职位空缺?

最佳答案

请注意您的代码对SQL injection 开放相关攻击。请学会使用Prepared Statements

现在,我们需要动态生成查询的 WHERE 部分。我们可以使用 !empty()函数检查输入过滤器值是否不为空,然后将其条件动态添加到查询中。

$functie = $_POST['functie'];
$branche = $_POST['branche'];
$regio = $_POST['regio'];

$search = "
SELECT cnt.title, cnt.alias, cnt.images, cnt.introtext, cnt.catid, cat.title, cat.alias
FROM snm_content cnt
LEFT JOIN snm_categories cat
ON cat.id = cnt.catid ";

// Collect all the where conditions in an array
$whr = array();

// check if $functie has some value in input filter
if (!empty($functie)) {
$whr[] = "cnt.title LIKE '%" . $functie . "%'";
}

// check if $branche has some value in input filter
if (!empty($branche)) {
$whr[] = "cat.title LIKE '%" . $branche . "%'";
}

$where_sql = '';
// Prepare where part of the SQL
if (!empty($whr)) {

$where_sql = ' WHERE ' . implode(' OR ', $whr);
}

// Append to the original sql
$search .= $where_sql;

关于php - 带有连接的搜索查询在搜索字符串为空时显示所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53427677/

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