Mysql - PHP 不同的值搜索
Posted
技术标签:
【中文标题】Mysql - PHP 不同的值搜索【英文标题】:Mysql - PHP different values searches 【发布时间】:2012-05-02 03:02:13 【问题描述】:我知道如何使用例如 WHERE 词来执行 mysql 搜索。但我的问题是我需要搜索不同的值,但这些值的数量可能会有所不同。例如:
我可以搜索 3 个变量 Name、LastName、Age 但 我在其他搜索中,我可以查找 2 个变量名称、年龄。
有没有办法使用相同的脚本执行 MYSQL 搜索,无论我搜索多少值。??
“强制”搜索固定数量的变量是一种更好的做法。??
谢谢!
罗伯托
【问题讨论】:
【参考方案1】:恕我直言,最好将搜索限制在固定数量的变量中。这样,您是出于特定原因回答特定问题,而不是试图为您的特定问题提供一般答案。限制搜索条件使语句更易于调试和性能基准测试。
希望这会有所帮助。
【讨论】:
【参考方案2】:只需为您的搜索参数使用一个变量并将其注入您的查询。只需确保在函数/方法中将变量放入正确的格式(这将取决于您如何选择不同的值。)
SELECT *
FROM db
$variable;
不会看到WHERE
子句,除非它传递了您的值(这意味着您可以使用相同的查询对数据库进行一般搜索),而不必担心$variable
是空的/必需的。
您的$variable
在构造时需要在其中包含WHERE
子句,然后您添加的每个值,以正确的格式插入(可能在循环中)。
希望这是有道理的,如果不让我知道,我会尽力澄清。这与大多数人在分页时使用的方法相同(除了他们将变量放在 LIMIT
而不是 WHERE
中)
编辑:
还要确保在注入前正确清理变量。
【讨论】:
是的,我明白了……很好的解释。!我会试试这个。。谢谢。!【参考方案3】:动态构建查询的简单示例:
$conditions = array();
if (...)
$conditions['age'] = $age;
if (...)
$conditions['name'] = $name;
...
if (!$conditions)
die('No conditions supplied');
// if you're still using the mysql_ functions and haven't done so before:
$conditions = array_map('mysql_real_escape_string', $conditions);
foreach ($conditions as $field => &$value)
$value = "`$field` = '$value'";
$query = 'SELECT ... WHERE ' . join(' AND ', $conditions);
动态拼凑您想要创建的确切查询并不难。请注意不要弄乱 SQL 语法或让自己面临更多注入漏洞。您可能想查看数据库抽象层,它几乎允许您将 $conditions
数组传递给一个函数,该函数将使用它构造实际的查询,或多或少与上面的方式相同。
【讨论】:
这段代码看起来很有趣……我会按照你写的来试试。!非常感谢!以上是关于Mysql - PHP 不同的值搜索的主要内容,如果未能解决你的问题,请参考以下文章
PHP/AJAx 实时搜索的最佳方法 - xml 还是 MySQL? [关闭]