2017-07-28 55 views
0

我正在使用CodeIgniter框架。我为我的公司CMS创建搜索功能,搜索有不同的输入来自表单。有没有办法根据$_POST输入运行查询组?我可以运行查询分开例如:codeigniter查询分组返回我的表中的所有结果

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(); 
} 

做工精细的广告在指定日期范围内返回正确的记录(例如所有记录,我的问题是,当我尝试和扩大查询采取其他的选择考虑到我要么从数据库中获取所有记录,要么尝试更改LIKE和WHERE子句的顺序,我尝试了OR_LIKE,OR_WHERE等方向,任何指向正确的方向都将非常感激,我读过CIs Query Builder Class Docs,但是内容M正式卡住这里是我的模型:

<?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(); 
    } 
} 

喜欢什么ID才达到的是: 选择$的cols FROM结果,其中condtion 1已输入或者条件2输入OR条件3等等等等 这可能吗?

回答

0

是的,您可以基于$_POST输入运行查询组,但输入发送给控制器,您应该使用一些参数编写方法并将其设置在控制器中。您无法直接将数据传输到模型。 这是一个参考。 https://www.sitepoint.com/the-mvc-pattern-and-php-1/

+0

我认为我们仍然可以在模型中访问'$ _POST',因为它是一个超级全局变量。理想情况下,我们应该将变量传递给模型方法,但'$ _POST'也可以正常工作。 – cyberrspiritt

+0

我不知道,但CodeIgniter使用MVC模式,我们必须服从它。但是你的表单发送数据给控制器,你不能发送到模型。 –

+0

我肯定从模型访问$ _POST。它是一个超级全局变量,甚至可以从助手或库访问。虽然这种做法不是gud实践,但我们应该理想地使用$ this-> input来解析get和posts参数。它可以很容易地将安全设置应用于它。 – cyberrspiritt