我正在使用CodeIgniter框架。我正在为我的公司CMS创建搜索功能,搜索具有来自表单的不同输入。有没有办法根据$_POST
输入运行查询组?我可以单独运行查询,例如:
class Search_model extends CI_Model {
public function get_results($search_term='default')
{
$cat = $_POST["col"];
// Column Select:
$col = 'id, dob, gender, app_date, tests_ordered, payment_method, cost, report_results, country';
// Build the query.
$database = $this->load->database('bookings_dev', TRUE)
->select($col)
->from('results')
->where($cat . ' ' . 'BETWEEN "'. date('Y-m-d', strtotime($_POST['sdate'])). '" and "'. date('Y-m-d', strtotime($_POST['edate'])).'"')
->order_by($_POST["col"]);
// Execute the query.
$query = $database->get();
// Return the results.
return $query->result_array();
}
Works fine ad返回正确的记录(例如所选日期范围内的所有记录,我的问题是当我尝试扩展查询以考虑其他选项时我要么从db获取所有记录,要么没有.I&# 39;我试过改变LIKE和WHERE条款的顺序,我试过OR_LIKE,OR_WHERE等。任何指向正确方向的人都会非常感激。我读过CIs Query Builder Class Docs但是正式卡住了。这是我的模特:
<?php
类Search_model扩展了CI_Model {
public function get_results($search_term='default')
{
$cat = $_POST["col"];
// Column Select:
$col = 'id, dob, gender, app_date, tests_ordered, payment_method, cost, report_results, country';
// Build the query.
$database = $this->load->database('bookings_dev', TRUE)
->select($col)
->from('results')
->group_start()
->where($cat . ' ' . 'BETWEEN "'. date('Y-m-d', strtotime($_POST['sdate'])). '" and "'. date('Y-m-d', strtotime($_POST['edate'])).'"')
->group_end()
->or_group_start()
->or_like($_POST["col"], $_POST["terms"])
->group_end()
->order_by($_POST["col"]);
// Execute the query.
$query = $database->get();
// Return the results.
return $query->result_array();
}
}
对于achive来说,最喜欢的是: SELECT $ cols FROM results WHERE condtion 1有输入OR条件2输入或条件3等 这可能吗?
答案 0 :(得分:0)
是的,您可以根据$_POST
输入运行查询组,但是输入会发送到控制器,您应该使用一些参数编写方法并将其设置在控制器中。您无法直接将数据传输到模型。
这是一个参考。
https://www.sitepoint.com/the-mvc-pattern-and-php-1/