搜索功能使用框架codeigniter,php

时间:2017-03-21 06:35:57

标签: php codeigniter

我的问题是每当我输入fnamemname时,我从数据库中收到错误。我只想在搜索字段中搜索fnamemname

我的search控制器功能

  public function search()
  {
    $li = $this->session->userdata('logged_in');
    $id = $this->session->userdata('idnumber');
    if($li == TRUE)
    {
      $this->load->model('users_model');
      $this->load->helper('smiley');
      $this->load->library('table');
      $image_array = get_clickable_smileys('http://localhost/efg/images/smileys', 'status');
      $col_array = $this->table->make_columns($image_array, 8);
      $image_array2 = get_clickable_smileys('http://localhost/efg/images/smileys', 'status');
      $col_array2 = $this->table->make_columns($image_array2, 8);
      $this->data['smiley_table1'] = $this->table->generate($col_array);
      $this->data['smiley_tables'] = $this->table->generate($col_array2);           
      if($this->input->post())
      {
        $search = $this->input->post('search');
        $memb = $this->users_model->search($search);
        $usersearch =  $this->users_model->search($search);
        $grpsearch =  $this->users_model->searchgrp($search);
        redirect ('home/profile/'.$memb);
      }
    }
 }

我的users_model型号

 public function search($search)
 {
   $this->db->select('*');
   $this->db->from('users');
   $this->db->like('username',$search);
   $this->db->or_like('fname',$search);
   $this->db->or_like('lname',$search);
   $this->db->or_like('mname',$search);
   $query = $this->db->get();
   foreach ($query->result_array() as $row)
   {
      $memb = $row['idnumber'];
   }
   $error = 'There is no record for the one you searched. Please go Back.';
   $query1 = $this->db->query("SELECT * FROM users WHERE idnumber ='$memb'");
   $hehe = $query1->result_array();
   if($hehe==NULL)
   {
     echo $error; exit;  
   }
   else 
   {
    return $memb;
   }
 }

2 个答案:

答案 0 :(得分:1)

始终在条件之前检查使用条件的变量。 如果它没有通过条件输出

        public function search($search)
         {
           $this->db->select('*');
           $this->db->from('users');
           $this->db->like('username',$search);
           $this->db->or_like('fname',$search);
           $this->db->or_like('lname',$search);
           $this->db->or_like('mname',$search);
           $query = $this->db->get();
           $memb = null;
           foreach ($query->result_array() as $row)
           {
              $memb = $row['idnumber'];
           }
           $error = 'There is no record for the one you searched. Please go Back.';
           $query1 = $this->db->query("SELECT * FROM users WHERE idnumber =$memb");
           $hehe = $query1->result_array();
           if($hehe==NULL)
           {
             return $error;
           }
           else 
           {
            return $memb;
           }
         }

答案 1 :(得分:0)

确保设置了您在查询中使用的变量。在执行查询之前陷阱。 此外,尽可能使用查询生成器(Active Record)。

public function search($search)
{
   $this->db->select('*');
   $this->db->from('users');
   $this->db->like('username',$search);
   $this->db->or_like('fname',$search);
   $this->db->or_like('lname',$search);
   $this->db->or_like('mname',$search);
   $query = $this->db->get();

   $memb = '';
   if ($query->result_array() > 0) {
      foreach ($query->result_array() as $row) {
         $memb = $row['idnumber'];        
      }
      if ($memb) {

         $this->db->select("*");
         $this->db->where("idnumber", $memb);
         $query1 = $this->db->get("users");

         //$query1 = $this->db->query("SELECT * FROM users WHERE idnumber ='$memb'");

         $hehe = $query1->result_array();
         return ($hehe) ? $memb : false;
      }
      return false;
   } 

  $error = 'There is no record for the one you searched. Please go Back.';
  return $error;
}