如何编写自定义查询Codeigniter

时间:2019-02-04 06:59:22

标签: php mysql codeigniter

我有以下查询及其在MySQL中的工作

SELECT * FROM usr_booking 
WHERE shop_id ='1' 
AND services_dates='2019-01-02' 
AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00');

但是,如果我以Codeigniter方式进行转换,则查询无法正常工作,如何在Codeigniter中编写此查询? 我尝试使用以下代码,但显示“数据库错误”

$query=$this->db->query("SELECT * FROM usr_booking 
WHERE shop_id ='1' 
AND services_dates='2019-01-02'
AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00')");

我哪里错了?预先感谢

3 个答案:

答案 0 :(得分:2)

您可以在CI查询构建器中参考此page

根据您的问题,您正在尝试将MySQL查询转换为CI查询生成器,对吗?让我们尝试一下,根据您的代码,您正在选择有条件的数据,因此它看起来像这样:

        $this->db->select("*");
        $this->db->from("usr_booking ");
        $this->db->where("shop_id",1);
        $this->db->where("services_dates",'2019-01-02');
        $this->db->where("start_time" >= '10:00');
        $this->db->where("start_time" <= '11:00');
        $this->db->or_where("end_time" >= '10:00');
        $this->db->where("end_time" <= '11:00');
        $query = $this->db->get();

        return $query->result();

基本上,这将返回有关对象类型的数据。如果您想将其转换为数组,请使用result_array()

如果遇到错误Database Error,请检查 application / config 下的 database.php 文件,您必须设置默认数据库配置< / em>。您可以参考here.

注意:Don't forget to load your database as always or set it on autoload.php

让我看看是否有改善。

答案 1 :(得分:0)

在Codeigniter中编写您自己的自定义查询很容易,您可以尝试一下。 像这样在模型内部创建一个函数

{
  "data": {
    "markdownRemark": {
      "frontmatter": {
        "title": "I AM CAPITALIZED"
      }
    }
  }
}

将此模型加载到控制器中,然后像这样从您的控制器中调用此函数!

function customQuery()
{
    $query = $this->db->query("SELECT * FROM usr_booking WHERE shop_id ='1' AND services_dates='2019-01-02' AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00')"); 
    return $query->result_array();
}

这将返回结果数组。 谢谢

答案 2 :(得分:0)

在模型中,创建一个函数

function customData($str)
{
   $query = $this->db->query($str); 
   return $query->result_array();
}

在您的控制器中加载相同的模型并调用上述方法

$querySTR = "SELECT * FROM usr_booking 
WHERE shop_id ='1' 
AND services_dates='2019-01-02' 
AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00')";

$result = $this->model_name->customData($querySTR);
if($result){
 //Write your code
} else {
  echo 'Error Code: '.$this->db->_error_number().' -- Error Message: '.$this->db->_error_message();
}