2014-12-08 91 views
0

我想创建一个基于哪个输入字段被填充总数的PHP脚本,使用这些字段作为SQL参数来创建一个SQL查询。但是,如果没有填写任何字段,则查询将只检索所有数据。例如:如果输入了“名称”和“城市”字段,则查询将不得不在最后连接“AND name = X_INPUT AND city = Y_INPUT”。PHP表单发送多个输入作为SQL查询

我试图为了测试而实例化$ POST变量,但什么都不返回。我甚至不确定这是否是解决问题的最佳方法,但任何帮助都将不胜感激!

$_POST['name']="Linda"; 
$_POST['city']=""; 
$query = "select * from customers where gender = 'F'"; 

    if (empty($_POST)) { 

    $query = "select * from customers where gender ='F'"; 
    } 
    else{ 

    foreach($_POST as $key => $v) { 
     if (!empty($_POST[$key])) { 
      $cond = " and ".$key."='".$v."'"; 
      $query = $query.$cond; 
+0

你引号'$ query'在3线不匹配。 – IanAuld 2014-12-08 08:08:55

回答

0

代码:

$query = $query.$cond; 

每一个附加到SQL查询不必要的。获取数组中的所有条件并简单地将它们连接为一个字符串。一切都应该这样工作。

$conditions = array(); 
foreach($POST as $key => $v) { 
    if (!empty($_POST[$key])) { 
    $conditions = " $key = '$v'"; 
    } 
} 
if (! empty($conditions)) { 
    $sql .= implode(' AND ', $conditions); 
} 
+0

添加一些语法的东西是$ conditions [] =“$ key = ....”和“$ sql。=”和“.implode ...”中的括号,因为implode不会添加“AND”开始。但完美的作品!谢谢! – user2934483 2014-12-08 07:14:01

0

您的foreach循环一个错字,利用这个

$_POST 

代替

$POST