这是我们到目前为止所尝试的代码。 我们实际需要做的是用户将在他选择的文本框中输入数据。我们希望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注入如何实现这一目标?
答案 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注入。