Php 基于条件的Sql查询结果
我在以下函数的sql查询结果中设置了两个条件:Php 基于条件的Sql查询结果,php,mysql,Php,Mysql,我在以下函数的sql查询结果中设置了两个条件: 表projects有两列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
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)
您可以使用
not
运算符添加这些条件:
SELECT *
FROM projects
WHERE a_name like '%$term%' AND
NOT (a_name = 'xxxx' and a_name = b_name)
问题部分是查询中的
$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;
}
问题部分是查询中的
$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;
}
需要
space
在'%$term%
和ORDER
之间需要space
在'%$term%
和ORDER
之间公共函数搜索项目名称($term){$params=array(':term'=>term);$sql=“SELECT*”来自项目名称类似“%$term%”而非“$term%”的项目(project_name='XXXX'和project_name=builder_name)按项目排序。create_date DESC$limit“$stmt=parent::query($sql,$params);while($row=$stmt->fetch(PDO::fetch_ASSOC)):$result[]=$row;endwhile;return$result;}公共函数搜索_project_name($term){$params=数组(':term'=>$term);$sql=“从按项目排序的项目名称(如“%$term%”和NOT(项目名称='XXXX')和NOT(项目名称=建筑商名称))中选择*。创建日期描述$limit”;$stmt=parent::查询($sql,$params);while($row=$stmt->fetch(PDO::fetch\U ASSOC)):$result[]=$row;ENDWILE;返回$result;}公共函数搜索\U项目名称”($term){$params=array(':term'=>$term);$sql=“从项目名称为“%$term%”和非项目名称为“%$term%”的项目中选择*(项目名称为“XXXX”和项目名称为建筑商名称)按项目排序。创建日期描述$limit”$stmt=parent::查询($sql,$params);而($row=$stmt->fetch(PDO::fetch ASSOC)):$result[]=$row;endwhile;return$result;}公共函数按项目顺序搜索项目名称($term){$params=array(':term'=>$term);$sql=“SELECT*”从项目名称(如“%$term%”和非(项目名称='XXXX')和非(项目名称=生成器名称)的项目中进行。创建日期描述$limit”$stmt=parent::query($sql,$params);while($row=$stmt->fetch(PDO::fetch_ASSOC)):$result[]=$row;endwhile;return$result;}