简体   繁体   English

基于Condition的Sql查询结果

[英]Sql Query Result based on Condition

I have two put two condition in the result of a sql query result for the below function: 我在下面的函数的sql查询结果的结果中有两个放两个条件:

  1. Table projects has two columns a_name and b_name and I want to exclude result in which b_name has value = xxxxx and value in a_name and b_name are same. 表项目有两列a_name和b_name,我想排除b_name的值= xxxxx,a_name和b_name中的值相同的结果。

Below is currently used: 目前使用的是:

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;
}

You could add these condition with a not operator: 您可以使用not运算符添加这些条件:

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

Problem part is $term in query so replace $term with :term try updated code: 问题部分是查询中的$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;
}

One more missing parameter is $limit you used in query but not passed to function? 还有一个缺失的参数是您在查询中使用但未传递给函数的$limit

With $limit as 2nd parameter default set to 10 rows: $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