正如标题所说,我可以将'%'
置于Codeigniter的类似查询中
$this->db->like('title', 'match', 'before');
// Produces: WHERE title LIKE '%match'
用于关联数组
$array = array('title' => $match, 'page1' => $match, 'page2' => $match);
$this->db->like($array);
// WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'
为了更加清晰,我的模型具有处理大部分选择查询的功能,我发送一个数组参数来检索结果
function getTableData($table='', $fields='', $like=array(),$like1=array())
{
//Check For like statement
if(is_array($like) and count($like)>0)
$this->db->like($like);
if(is_array($like1) and count($like1)>0)
$this->db->or_like($like1);
//Check For Fields
if($fields!='')
$this->db->select($fields);
else
$this->db->select();
$result = $this->db->get();
//pr($result->result());
return $result;
}
这是我的通用功能,所以当作为参数发送或修改功能时,如何使用通配符放置默认'both'
的第三个参数。
使用第三个参数i控制%
的放置,但是当我使用关联数组时,如何在Codeigniter中实现通配符放置。
我怎样才能在不同列的关联数组中使用它。这可能吗?我知道我可以使用自定义查询,目前我正在使用它。如有任何帮助,请提前致谢。
答案 0 :(得分:2)
我查看了核心DB_active_rec.php文件。请尝试这个:
$this->db->like($array, false, 'before');
/system/database/DB_active_rec.php第571行:
/**
* Like
*
* Generates a %LIKE% portion of the query. Separates
* multiple calls with AND
*
* @param mixed
* @param mixed
* @return object
*/
public function like($field, $match = '', $side = 'both')
{
return $this->_like($field, $match, 'AND ', $side);
}
答案 1 :(得分:1)
在查询中使用尽可能多的like
。 E.g:
$this->db->like('title', $title, 'after')->like('page1', $page1)->like('page2', $page2, 'after')->get('table');
答案 2 :(得分:0)
您可以多次使用like():
$this->db->like('title', 'match');
$this->db->like('page1', 'match');
$this->db->like('page2', 'match');
或者如果PHP> 5使用链式:
$this->db->like('title', 'match')->like('page1', 'match')->like('page2', 'match');
如果你有一个值数组,请使用foreach():
//considering $like = array('field' => 'value', 'field2' => 'value2');
foreach ($like as $field=> $value)
{
$this->db->like($field, $value);
}