如何根据某些规则进行SQL查询

时间:2010-05-27 22:01:30

标签: php mysql sql

我有这个HTML表单,我有多个输入元素:文本,广播等。这些是作为选项,在SQL查询中应用的条件项,以便从数据库中提取更多特定数据。

例如,第一个输入字段是文本框,第二个是单选按钮,第三个是带有两个选项的SELECT。首先,我将在SQL查询中添加 LIKE%name%句子。第二个是一个单选按钮组,比如一个颜色,所以我会添加一个 WHERE color = $ item ,将选择的一个与数据库列进行比较。第三个就像第二个一样。

现在,我想我可以使用 if 句子来比较这三个项目,以便知道要添加到SQL查询中的哪一个,但我的问题是:是否有更聪明这样做的方法?就像一个数组检查是否设置了这些变量(我在这里仍然使用 if ,所以没关系)。

我不时编写简单的东西,因为我从来没有做过任何相当复杂的事情,但有时候,即使对于简单的事情,无论我多么努力地设计某些东西,我都不能。

在这种情况下,我真的无法想象(想象,可视化)我将如何构建PHP代码以及SQL查询,以便将这三个条件添加到 WHERE 子句

如果你能在这里帮助我,我将不胜感激。如果您需要更多详细信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

你可以随时构建你的sql语句。

一个简单的例子:

$sql = "SELECT ... WHERE 1=1";      // 1=1 is just an example to get the WHERE out of the way

if (first condition / certain $_POST variable is set)
{
    $sql .= " AND LIKE %...%";
}
if (second condition)
{
    $sql .= " AND something=...";
}
// etc.

// run query

答案 1 :(得分:1)

仅为添加其他解决方案,我建议您使用存储过程。

http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

http://www.brainbell.com/tutorials/MySQL/Using_Stored_Procedures.htm

您只需要将值传递给sp并在其中生成where条件。

还有另一个选项可以在PHP中生成参数化查询以防止SQL注入。

以下是此主题的一些链接。

http://us2.php.net/manual/en/security.database.php

http://www.roscripts.com/PHP_MySQL_by_examples-193.html

http://www.webmasterworld.com/php/3110596.htm

http://am.php.net/mysql_real_escape_string