在 codeigniter 中搜索查询
Posted
技术标签:
【中文标题】在 codeigniter 中搜索查询【英文标题】:Search Query in codeigniter 【发布时间】:2017-11-19 00:12:26 【问题描述】:我是 codeigniter 的新手。我想创建一个搜索栏,用户在其中写一些关键字,它将检查数据库中表的所有字段,然后显示相关结果。
这是我的查看代码:
<?php
echo '<h2>Search Books</h2>';
echo form_open('site/search');?>
<p>
<label for="title"> Title:</label>
<input type="text" placeholder="Search" name="search" size="50%">
</p>
<input type="submit" value="Submit"/>
<?php echo form_close(); ?>
<!--Here will be Search Result-->
<?php if (isset($searches)): foreach($searches as $search):?>
<h4><?php echo "   ";
echo $search->book_name;
echo "   "; ?></h4>
<?php endforeach; ?>
<?php else: ?>
No Book Found
<?php endif;?>
而名为 site 的控制器代码是
function search()
$search_book = array (
$search= $this->input->post('search')
);
$this->users_model->user_search($search_book);
$this->dashboard();
控制器中查询结果
if ($query = $this->users_model->user_search())
$search['searches'] = $query;
$data = $search;
$this->load->view('dashboard', $data);
这是型号代码:
function user_search($search_book)
$query = $this->db->like('book_name', $search_book);
$this->db->or_like('author', $search_book);
$this->db->or_like('date', $search_book);
$this->db->get('books');
return $query->result();
错误显示
遇到了 PHP 错误
严重性:警告
消息:在调用中缺少 Users_model::user_search() 的参数 1 C:\xampp\htdocs\Pure_Logics\application\controllers\site.php 上线 28和定义
文件名:models/users_model.php
行号:26
回溯:
文件:C:\xampp\htdocs\Pure_Logics\application\models\users_model.php 行:26 函数:_error_handler
文件:C:\xampp\htdocs\Pure_Logics\application\controllers\site.php 行:28 功能:user_search
文件:C:\xampp\htdocs\Pure_Logics\index.php 行:315 功能: 需要一次
【问题讨论】:
$this->users_model->user_search() 缺少参数 【参考方案1】:方法调用中缺少参数
$this->users_model->user_search()
改成
if ($query = $this->users_model->user_search($this->input->post('search')))
$search['searches'] = $query;
型号:
function user_search($search_book)
$this->db->like('book_name', $search_book);
$this->db->or_like('author', $search_book);
$this->db->or_like('date', $search_book);
$query = $this->db->get('books');
return $query->result();
控制器:
function search()
$this->dashboard();
$data['searches'] =array();
if ($query = $this->users_model->user_search($this->input->post('search')))
$data['searches'] = $query;
$this->load->view('dashboard', $data);
1) 你调用没有参数的方法。但是您定义的方法在模型中带有参数。
【讨论】:
我错过了哪个论点?我不明白 亲爱的我不知道我可以通过哪个参数?请帮帮我,告诉我哪个参数会在这里通过? 现在它显示了另一个错误Fatal error: Call to undefined method CI_DB_mysqli_driver::result() in C:\xampp\htdocs\Pure_Logics\application\models\users_model.php on line 32
谢谢大哥 :)
很高兴帮助你@sunny【参考方案2】:
使用多个条件选择数据并搜索关键字
function select_data_by_search($tablename, $search_condition, $condition_array = array(), $data = '*', $sortby = '', $orderby = '', $limit = '', $offset = '', $join_str = array())
$this->db->select($data);
if (!empty($join_str))
foreach ($join_str as $join)
$this->db->join($join['table'], $join['join_table_id'] . '=' . $join['from_table_id']);
$this->db->where($condition_array);
$this->db->where($search_condition);
//Setting Limit for Paging
if ($limit != '' && $offset == 0)
$this->db->limit($limit);
else if ($limit != '' && $offset != 0)
$this->db->limit($limit, $offset);
//order by query
if ($sortby != '' && $orderby != '')
$this->db->order_by($sortby, $orderby);
$query = $this->db->get($tablename);
//if limit is empty then returns total count
if ($limit == '')
$query->num_rows();
//if limit is not empty then return result array
return $query->result_array();
函数传递参数说明 $tablename="tablename"; $search_condition="通过搜索刺痛"; $condition_array="在数组中传递多个 where 条件,例如:- array("con1"=>"value","con2"=>"value")"; $data = '选择数据名称,例如:- user.name,user.email' $sortby="排序值"; $orderby="orderby 价值"; $limi="限制值"; $offset=""; $join_str[0]['table'] = 'table1'; $join_str[0]['join_table_id'] = 'table1.id'; $join_str[0]['from_table_id'] = 'maintable.id'; $join_str[0]['join_type'] = 'left';
$join_str[1]['table'] = 'table1';
$join_str[1]['join_table_id'] = 'table1.id';
$join_str[1]['from_table_id'] = 'maintable.id';
$join_str[1]['join_type'] = 'left';
【讨论】:
您可以将此功能用于所有模块作为通用搜索功能【参考方案3】:在您的控制器中:数组格式不正确
function search()
$search_book = array (
'search' => $this->input->post('search')
);
$this->users_model->user_search($search_book);
$this->dashboard();
控制器中查询结果
if ($query = $this->users_model->user_search($search_book))
$search['searches'] = $query;
$data = $search;
$this->load->view('dashboard', $data);
型号代码:
function user_search($search_book)
return $this->db->like('book_name', $search_book);
->or_like('author', $search_book);
->or_like('date', $search_book);
->get('books')->result();
【讨论】:
【参考方案4】:在控制器的查询结果中,您没有将参数传递给user_search()
:
if ($query = $this->users_model->user_search())
您必须向它发送一个参数,如下所示:
if ($query = $this->users_model->user_search($search_query))
【讨论】:
您需要向它发送参数,例如:if ($query = $this->users_model->user_search($this->input->post('search')))
以上是关于在 codeigniter 中搜索查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 codeigniter ci_marchant_Lib 库的 PayPal 定期付款
将分页与查询字符串一起用于搜索表单,该表单的方法设置为进入 codeigniter