gpt4 book ai didi

php - MySQL + PHP + 根据多个输入查询表中的多列,不需要所有输入

转载 作者:行者123 更新时间:2023-11-30 21:30:17 25 4
gpt4 key购买 nike

我希望能够使用与表中多个列相关的多个表单输入来查询数据库中的表。我遇到的问题是并非所有的表单输入都是必需的。

一个小细节...

我有一个名为 users 的表。该表有很多列,但我要查询的是 first_name、last_name、location、status(0 或 1)。

我在搜索表单上有三个输入。名称(文本)、位置(选择)和状态(选择)。用户不必输入所有输入,只需输入一个即可。

我遇到的主要问题是根据输入编写查询。我可以让它与多个 else/if 语句一起工作,例如......

if($_POST['name'] && !$_POST['location'] && !$_POST['status']){
$query = '[QUERY THAT MATCHES NAME]';
} else if($_POST['name'] && $_POST['location'] && !$_POST['status']){
$query = '[QUERY THAT MATCHES NAME AND LOCATION]';
} else if($_POST['name'] && $_POST['location'] && $_POST['status']){
$query = '[QUERY THAT MATCHES NAME AND LOCATION AND STATUS]';
} else if {
etc...
}

但是,这变得非常困惑,非常快,因为我需要有 9 个左右的“else if”语句来涵盖所有可能的场景。

我的问题是,是否有更简洁的方法来在单个查询中处理此问题,或者至少没有所有这些“else if”语句?

最佳答案

你可以按照以下方式做一些事情:

$query = 'SELECT * FROM TABLE WHERE';
$flag = 0;
if ($_POST['name']) {
$query .= ' NAME = "' . $_POST['name'] . '"';
$flag = 1;
}
if ($_POST['location']) {
if ($flag) { $query .= " AND "; }
$query .= ' LOCATION = "' . $_POST['location'] . '"';
$flag = 1;
}
if ($_POST['status']) {
if ($flag) { $query .= " AND "; }
$query .= ' STATUS = "' . $_POST['status'] . '"';
}

尽管如此,我不确定它会使您的代码看起来好多少。

此外,这还假设您将至少有一个值通过您的发布请求传递。

关于php - MySQL + PHP + 根据多个输入查询表中的多列,不需要所有输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56589139/

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