2012-03-30 24 views
14

Tôi muốn có chức năng sau đây để chọn khách sạn có chỗ ở giữa một số $minvalue$maxvalue nhất định. Điều gì sẽ là cách tốt nhất để làm điều đó?sử dụng GIỮA ở WHERE condition

function gethotels($state_id,$city,$accommodation,$minvalue,$maxvalue,$limit,$pgoffset) 
    { 
     $this->db->limit($limit, $pgoffset); 
     $this->db->order_by("id", "desc"); 
     $this->db->where('state_id',$state_id); 
     $this->db->where('city',$city); 

     // This one should become a between selector 
     $this->db->where($accommodation,$minvalue); 

     $result_hotels = $this->db->get('hotels'); 
     return $result_hotels->result(); 

    } 
+1

Đây là kohana, codeigniter hoặc someOtherPHPFramework –

+2

Bạn đã gắn thẻ câu hỏi 'mysql', nhưng mã của bạn không phải là' mysql' ... – Marco

+0

điều này không liên quan gì đến mysql, và bạn không viết khung gì bạn sử dụng. có thể sử dụng, moreOrEqual minVal VÀ lessOrEqual maxVal thay vì từ – cichy

Trả lời

35

Bạn nên sử dụng

$this->db->where('$accommodation >=', minvalue); 
$this->db->where('$accommodation <=', maxvalue); 

Tôi không chắc chắn về cú pháp, vì vậy tôi xin lỗi nếu đó là không đúng.
Dù sao BETWEEN được triển khai bằng cách sử dụng> = min & & < = CPC
Đây là ý nghĩa của ví dụ của tôi.

EDITED:
Nhìn vào this link Tôi nghĩ rằng bạn có thể viết:

$this->db->where("$accommodation BETWEEN $minvalue AND $maxvalue"); 
+0

vâng tôi hiểu rồi !! –

+0

@Viju Vijay: hãy thử câu trả lời đã chỉnh sửa của tôi và cho tôi biết nếu nó hoạt động ... – Marco

+0

có hoạt động của nó :) –

5

Âm thanh đúng nhưng một số vấn đề có lẽ sẽ tạo các thực hiện truy vấn này: tôi sẽ đề nghị:

$this->db->where("$accommodation BETWEEN $minvalue AND $maxvalue", NULL, FALSE); 
+2

Cách sử dụng kiểu này mang lại sự cố bảo mật SQL Injection –

0

Bạn cũng có thể gặp thông báo lỗi. "Operand loại đụng độ: Ngày không tương thích với int

Sử dụng dấu nháy đơn xung quanh ngày Ví dụ:.. $this->db->where("$accommodation BETWEEN '$minvalue' AND '$maxvalue'");

5

Trong CodeIgniter Đây là cách đơn giản để kiểm tra giữa hai kỷ lục ngày ...

$start_date='2016-01-01'; 
$end_date='2016-01-31'; 

$this->db->where('date BETWEEN "'. date('Y-m-d', strtotime($start_date)). '" and "'. date('Y-m-d', strtotime($end_date)).'"'); 
Các vấn đề liên quan