【问题标题】:Search data from database从数据库中搜索数据
【发布时间】:2016-03-22 17:38:12
【问题描述】:

我想显示数据库中的数据。我创建了一个搜索表单,但显示结果时出错。附上错误截图。

在数据库中,由员工姓名和分支机构组成。分支下拉列表,我是从数据库中获取的。分支的示例是学院计算机科学和数学。

我认为错误出在模型中。 有人可以帮我修复我的代码

控制器

   function filter_directory()
  {

  $search_term = $this->input->post('search_term');
  $search_branch = $this->input->post('search_branch');

  $data['search_term'] = $search_term;
  $data['search_branch'] = $search_branch;

  $data['branch_name'] = $this->direktori_model->get_branch_list();

  $data['search_term'] = $this->input->get('search_term');
  $data['search_branch'] =$this->input->get('search_branch');

  $data['results'] = $this->direktori_model->get_directory_results($data['search_term'], $data['search_branch'], $config['per_page'], $page);

  $this->load->view('directory/directory_list', $data);
}

型号

function get_directory_results($search_term, $search_branch, $limit=10, $offset=0)
{
   $sql = "SELECT * FROM Staff_Profile
    WHERE Name LIKE '%$search_term%' 
    AND Branch = {$search_branch}
    AND Enabled = 'Y' 
    AND Lang ='BM'
    ORDER BY ID ASC
    OFFSET {$offset} ROWS
    FETCH NEXT {$limit} ROWS ONlY";

    $query = $this->db->query($sql);
    return $query->result();
   }

查看

   <?php echo validation_errors();?>
    <?php echo form_open("direktori/filter_directory", array('method' => 'get'));?>
    <div class="row collapse">
      <div class="medium-4 columns ">
        <?php echo form_input(array('name' => 'search_term', 'id' => 'search-box', 'value' => $search_term)); ?>
      </div>
      <div class="medium-4 columns ">
        <?php echo form_dropdown("search_branch", $branch_name, "", 'id="branch_id"');?>
      </div>
      <div class="medium-4  columns ">
      <?php echo form_submit('search', 'SEARCH', 'class="button expand"'); ?>
      </div>
    </div>
    <?php echo form_close(); ?>

【问题讨论】:

  • @AdarshMPallickal 抱歉,我附上了错误截图
  • 您使用的是哪个数据库驱动程序?

标签: php sql-server codeigniter search-engine


【解决方案1】:

在您的查询中,您必须在 BRANCH 之后添加引号

您的查询:

SELECT * FROM staff_profile 
where name Like '%anuar%'
and branch = BAHAGIAN KEWAIGAN & PENGURUSAN  <-- ERROR
and enabled = 'Y' and lang = 'BM'
order by id asc offset o rows fetch next 10 rows only

固定查询:

SELECT * FROM staff_profile 
where name Like '%anuar%'
and branch = 'BAHAGIAN KEWAIGAN & PENGURUSAN'
and enabled = 'Y' and lang = 'BM'
order by id asc offset o rows fetch next 10 rows only

【讨论】:

  • 我已经试过了,附上截图没有错误,但结果没有显示
  • @nienahusain:在您的屏幕截图中有一个错误(由分支值的引用修复)。如果您没有结果,请检查您的数据。如果可能,请发布您的数据示例,以便我们对其进行分析
【解决方案2】:

错误出现在分支附近。请将分支放在引号内。

$sql = "SELECT * FROM Staff_Profile WHERE Name LIKE '%$search_term%' AND Branch = '$search_branch' AND Enabled = 'Y' AND Lang ='BM' ORDER BY ID ASC OFFSET {$offset} ROWS FETCH NEXT {$limit} ROWS ONlY";

【讨论】:

    【解决方案3】:

    在模型中使用 codeigniter 语法

    function get_directory_results($search_term, $search_branch, $limit=10, $offset=0){
        $this->db->order_by('ID','ASC');
        $this->db->like('Name',$search_term);
        $this->db->where('Lang','BM');
        $this->db->where('Enabled','Y');
        $this->db->where('Branch',$search_term);
        $query=$this->db->get('Staff_Profile',$limit,$offset);
        return $query->result();
    }
    

    在这种格式中,您可以移植到任何其他 BD 并更轻松地向您展示您遇到的麻烦。

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2014-12-29
      • 2019-07-05
      相关资源
      最近更新 更多