Php 在MySQL中,如何从包含三个字段的搜索表单中检索多个值?
我有两张桌子:Php 在MySQL中,如何从包含三个字段的搜索表单中检索多个值?,php,mysql,Php,Mysql,我有两张桌子: 客户 城市 在搜索表单中,我有三个字段: 填写客户机名称的文本输入表单 选择框,用于选择要搜索的城市(表格城市) 另一个选择框,用于选择用户要搜索的主要业务(业务包括在客户表中) 根据表单字段的选择,它将从两个表中进行搜索 我考虑根据用户的选择执行多个SQL查询 问题是,用户可能不会在输入表单中填写客户的名称,或者可能会,但不会选择城市,等等 那么,根据用户的选择,我是否需要执行多个ifs来显示多个sql查询?也许我有一个不那么令人困惑的解决方案…也许可以修改您的数据库结构来帮助
那么,根据用户的选择,我是否需要执行多个ifs来显示多个sql查询?也许我有一个不那么令人困惑的解决方案…也许可以修改您的数据库结构来帮助您。例如,我假设你在城市和客户之间有关系。听起来企业就像是“技术”或“搜索”,在这种情况下,你会有多个客户拥有相同的业务吗?将企业移植到一个单独的表中,然后参考这些表,可能是值得的。然后您可以进行一个简单的查询,例如:
SELECT *
FROM clients
WHERE clients.city = {form result: cities.id}
AND clients.business = {form result: businesses.id}
ORDER BY clients.name
LIMIT 0, 30
现在假设用户没有填写其中一个字段(例如city),您有两种选择:通过验证用户输入强制他们填写,或者将其用作通配符,在这种情况下,您可以从查询中删除WHERE clients.city
子句。假设您正在给城市的
id的选项值
在本例中,我将以编程方式构建查询:
$queryStr = 'SELECT * FROM clients';
if (!empty($_POST['city']) && !empty($_POST['business'])) {
$queryStr .= ' WHERE city = ' . filter($_POST['city']) . ' AND business = ' . filter($_POST['business']);
} elseif (!empty($_POST['city'])) {
$queryStr .= ' WHERE city = ' . filter($_POST['city']);
} elseif (!empty($_POST['business'])) {
$queryStr .= ' WHERE business = ' . filter($_POST['business']);
} else {
// pass
}
$queryStr .= ' ORDER BY name LIMIT 0, 30';
其中filter是您选择的过滤方法。只需使用您的条件查询数据库即可。如果客户机/城市确实存在,那么它们将显示出来,否则查询将返回一个空集。尽管很简单,但不需要验证其中任何一个的存在——例如,用户应该足够聪明,能够想出一个现有的城市名称
您需要做的唯一一件事是mysql\u real\u escape\u string()。业务表已创建,但未连接到客户表。我的客户给了我一个access数据库供我使用,但它很旧,而且做得不好。在clients表中还有一个包含business的字段。有500家企业。如何将企业名称转换为id?制作excel并进行转换?我必须一个接一个地进行转换?我在Access方面没有做太多工作(我更愿意使用mysql/pgsql-您可以更轻松地将表转储为csv并尝试导入它们)。我不会将每个企业的名称用作id,而是为每个企业提供一个标识号(Access中的自动编号),并以此作为参考。