基本上通过显示一个表单,用户可以输入2个变量$ no和$ first但我只能在输入两个字段时显示结果。我需要它才能工作,所以当我输入1变量时,它会显示结果。
我以为我可以使用某种OR语句,但我不确定如何实现它。任何帮助将不胜感激,如果它不够清楚,我会道歉,当涉及到codeigniter时我是相当新的。
控制器
public function query()
{
$no = $this->input->post('no');
$first = $this->input->post('first');
$this->load->model("test");
$data['query']=$this->test->query($no,$first);
$this->load->view('query',$data);
}
模型
function query($no, $first)
{
return $query = $this->db->get_where('table', array('no' => $no,
'first' => $first ))->result();
}
查看
<?php foreach($query as $row): ?>
<tr>
<td><?php echo $row->no; ?></td>
<td><?php echo $row->date; ?></td>
<td><?php echo $row->first; ?></td>
</tr>
<?php endforeach; ?>
答案 0 :(得分:1)
您可以尝试先准备where子句
function query($no = "", $first = "")
{
$response = array();
if($first != "" || $no != ""){
$where = "";
if($no == "") $where = 'first = '.$first;
if($first == "") $where = 'no = '.$no;
if($first != "" && $no != "") $where = 'no = '.$no.' AND first = '.$first;
$fetch = $this->db->where($where)->from('table')->get();
if($fetch->num_rows() > 0) $response = $fetch->result_array();
}
return $response;
}
希望我能得到你想要的主意。
答案 1 :(得分:0)
您需要将WHERE
个参数分开:
function query($no, $first)
{
$this->db->select();
$this->db->from('table');
$this->db->where('no', $no);
if (!empty($first))
{
$this->db->or_where('first', $first); // or use `and_where`
}
return $query = $this->db->get()->result();
}
来源:http://ellislab.com/codeigniter/user-guide/database/active_record.html
答案 2 :(得分:0)
function query($no = '%', $first = '%')
{
$this->db->where("'no' = $no OR 'first' = $first");
$query = $this->db->get('table');
if($query->num_rows() >= 0)
{
$return $query->result();
}
}
如果你输入一个外卡值,默认值可以为空(实际上两者都可以为空以返回所有结果)然后只需在双引号内构建整个where语句。
如果你不想在字符串为空的情况下不返回所有结果,你真的不需要提供通配符,但你应该在某处检查空结果或不返回。