簡體   English   中英

基於Condition的Sql查詢結果

[英]Sql Query Result based on Condition

我在下面的函數的sql查詢結果的結果中有兩個放兩個條件:

  1. 表項目有兩列a_name和b_name,我想排除b_name的值= xxxxx,a_name和b_name中的值相同的結果。

目前使用的是:

public function search_project_name($term)
{
    $params = array( ':term' => $term);
    $sql = "SELECT * FROM projects WHERE project_name like '%$term%'ORDER BY projects.create_date DESC $limit";
    $stmt = parent::query($sql, $params);
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
        $result[]=$row;
    endwhile;
    return $result;
}

您可以使用not運算符添加這些條件:

SELECT * 
FROM   projects 
WHERE  a_name like '%$term%' AND
       NOT (a_name = 'xxxx' and a_name = b_name)

問題部分是查詢中的$term ,因此將$term替換$term :term嘗試更新代碼:

public function search_project_name($term){
  $params = array(
    ':term'=>$term);
  $sql = "SELECT * FROM projects WHERE project_name like '%:term%'ORDER BY projects.create_date DESC $limit";
  $stmt = parent::query($sql, $params);
  while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
    $result[] = $row;
  endwhile;
  return $result;
}

還有一個缺失的參數是您在查詢中使用但未傳遞給函數的$limit

$limit作為第二個參數,默認設置為10行:

public function search_project_name($term, $limit = 10){
  $params = array(
    ':term'=>$term);
  $sql = "SELECT * FROM projects WHERE project_name like '%:term%'ORDER BY projects.create_date DESC $limit";
  $stmt = parent::query($sql, $params);
  while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
    $result[] = $row;
  endwhile;
  return $result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM