在数据库中搜索多个用户输入的文本字段

时间:2015-04-11 07:33:12

标签: php mysql

这是我们到目前为止所尝试的代码。 我们实际需要做的是用户将在他选择的文本框中输入数据。我们希望php查询结合搜索结果并提供输出。

    $query=array();
    $query[] = empty($_POST['keyword_s_dec']) ? : 'cand_desc='.$_POST['keyword_s_dec'];
    $query[] = empty($_POST['keyword_s_location']) ? : 'cand_location='.$_POST['keyword_s_location'];
    $results = implode('AND', $query);

    $sql = "SELECT * FROM candidate where '".$results."'";

    $result = mysql_query($sql) or die(mysql_error());   

其中keyword_s_dec& keyword_s_location是我们的texfield ID;         cand_desc& cand_location是数据库列。

我们也在尝试SQL注入如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我对您的代码进行了一些调整:

$query = array();

if (!empty($_POST['keyword_s_dec'])) $query[] = "cand_desc = '".$_POST['keyword_s_dec']."'";
if (!empty($_POST['keyword_s_location'])) $query[] = "cand_location = '".$_POST['keyword_s_location']."'";

$condition = implode(' AND ', $query);

$sql = "SELECT * FROM candidate WHERE $condition";

$result = mysql_query($sql) or die(mysql_error());  

这会构建一个有效的查询:

SELECT * FROM candidate WHERE cand_desc = 'test1' AND cand_location = 'test2'

您的主要问题是您没有在AND字符串周围插入空格和WHERE子句中的值的单引号,但我还删除了条件?:运算符,因为它使代码的可读性降低。

请注意,我只修复了您编写的代码。如果没有设置POST变量,那么它就不会工作(从那以后,SQL字符串将有一个没有任何内容的WHERE子句),在阅读{{1}时你绝对应该使用mysql_real_escape_string()变量以防止SQL注入。