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/MySQL 搜索查询 [重复]

PHP、MySQL 验证故障和搜索不起作用?

PHP/AJAx 实时搜索的最佳方法 - xml 还是 MySQL? [关闭]

使用 Jquery Datepicker 进行 PHP MYSQL 日期范围搜索

mysql中case用法

MYSQL索引详解