gpt4 book ai didi

php - 使函数成为条件 Mysql 查询

转载 作者:行者123 更新时间:2023-11-29 07:33:20 24 4
gpt4 key购买 nike

我在 CodeIgniter 3 上有一个简单的函数,它使用带有细化变量的简单查询从数据库中获取一些数据:

function  search($term){

$this->db->like('sReference',$term)
->or_like('nReference', $term)
->or_like('sSearch', $term)
->or_like('sSort', $term);

$query = $this->db->get('tReference');
$ret['rows'] = $query->result();
$ret['number'] = $query->num_rows();

return $ret;
}

此外,我需要对另一种搜索方法进行相同的查询,但只需添加两行,如下所示:

function  search($term){
//Affichage de sproduits
$this->db->like('sReference',$term)
->or_like('nReference', $term)
->or_like('sSearch', $term)
->or_like('sSort', $term)
->join('tManufacturer','nManufacturer=tReference.nManufacturer')
->where('nStatus',$status);

$query = $this->db->get('tReference');
$ret['rows'] = $query->result();
$ret['number'] = $query->num_rows();

return $ret;
}

我的问题是:有什么方法可以对其设置条件(知道我对两个查询使用不同的搜索表单),或者我必须进行两个单独的查询?

感谢你们所有人?

最佳答案

是的,当然。向该函数添加 2 个参数,如果您愿意,您可以使其变得非常灵活。

function  search($term, $join=array(), $where=array()){
//Affichage de sproduits
$this->db->select('*')
->from('tReference');
->like('sReference',$term)
->or_like('nReference', $term)
->or_like('sSearch', $term)
->or_like('sSort', $term);
if ( is_array($join) && count($join) == 2 ) {
$this->db->join($join[0], $join[1]);
}
if ( is_array($where) && count($where) == 2 ) {
$this->db->where($where[0],$where[1]);
}

$query = $this->db->get();
$ret = array();
foreach ($query->result() as $row)
{
$ret['rows'][] = $row;
}
$ret['number'] = $query->num_rows();

return $ret;
}

现在这样调用它

$result = search('smith');   // just the ->like's

或者如果您想要设置连接

$result = search('smith', 
array('tManufacturer',
'nManufacturer=tReference.nManufacturer')
);

或者如果您想要加入并设置位置

$status = 'something';
$result = search('smith',
array('tManufacturer',
'nManufacturer=tReference.nManufacturer'),
array('nStatus', $status)
);

或者如果您只想要 where 子句而不是联接

$status = 'something';
$result = search('smith', NULL, array('nStatus', $status) );

关于php - 使函数成为条件 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31821454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com