繁体   English   中英

使用PDO进行多个条件查询

[英]Multiple conditions queries with PDO

我在http://codereview.stackexchange.com中问了这个问题,他们希望我将其发布在这里。 我根本无法使用此代码。 我从常规的mysql切换到了pdo,这更安全。 有人可以告诉我我在这里想念的东西吗。 我一直在努力奋斗了几天,当我第一次搜索该站点时,我可以找到确切的答案。

  $input = $_POST['input'];
 $categories = $_POST['category'];
 $state = $_POST['state'];
 $zipcode = $_POST['zipcode']; 

$qq = $db->prepare(" SELECT * FROM classified  ")or die(print_r($qq->errorInfo(), true));
    /*** execute the prepared statement ***/
    $qq->execute();

    /*** echo number of columns ***/
    $rows = $qq->fetch(PDO::FETCH_NUM);
    if ($rows>0){
      $query = (" SELECT * FROM classified ");
   $cond = array();
   $params = array();

   if (!empty($input)) {
   $cond[] = "title = ?";
       $params[] = $input;
    }

   if (!empty($categories)) {
    $cond[] = "id_cat = ?";
    $params[] = $categories;
     }

    if (!empty($state)) {
    $cond[] = "id_state = ?";
    $params[] = $state;
    }    

   if (!empty($zipcode)) {
     $cond[] = "zipcode = ?";
     $params[] = $zipcode;
   }

  if (count($cond)) {
  $query .= ' WHERE  ' . implode(' AND ', $cond)or 
  die(print_r($query->errorInfo(),true));
 }

$stmt = $db->prepare($query);
 $stmt->execute($params);
 $ro = $stmt->fetch(PDO::FETCH_NUM);
   }
     if ($ro > 0) {
  foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) 
   {
     echo  $row['title'];
   echo  $row['categories'];
   echo  $row['state'];
   echo  $row['zipcode'];
  }
 } 

我认为在此处发布答案而不是发布链接是一个好主意。 我相信这对某些人有用。

    $input = $_POST['input'];
    $categories = $_POST['category'];
    $state = $_POST['state'];
    $zipcode = $_POST['zipcode'];

    $qq = $db->prepare(" SELECT * FROM classified  ")or die(print_r($qq->errorInfo(),
    true));
    /*** execute the prepared statement ***/
    $qq->execute();

/*** echo number of columns ***/
$rows = $qq->fetch(PDO::FETCH_NUM);
if ($rows>0){

 $query = " SELECT * FROM classified where confirm='0' ";  
 if(!empty( $_POST['input'])) {

 $query .= "AND title LIKE '%".$input."%' ";
 }


if (!empty($_POST['category']) )
   {
  $query .= "AND id_cat = ".$categories." ";

 }

  if (!empty($_POST['state']) )
  {
  $query .= "AND id_state = ".$state." ";

  }


  if(!empty($_POST['zipcode'])) {

  $query .= "AND zipcode = ".$zipcode." ";
  }
   $query .= "ORDER BY date ";

    }

   $stmt = $db->prepare($query);
  $stmt->execute($params);
   $result = $stmt->fetchAll();
 //  $ro = $stmt->fetch(PDO::FETCH_NUM);

  // it didn't work when I tried to count rows
 if ($result > 0) {
foreach ($result as $row)
 {
 echo  $row['title'];
 echo  $row['categories'];
 echo  $row['state'];
 echo  $row['zipcode'];
 }
 }else{
 echo " No data available";
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM