2012-03-30 12 views
14

Chciałbym poniższą funkcję, aby wybrać hotele z zakwaterowania między pewnymi $minvalue i $maxvalue. Jaki byłby najlepszy sposób na zrobienie tego?przy użyciu MIĘDZY w warunku WHERE

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

czy to jest w kohanie, codeigniter czy jakimś Innym phpFramework –

+2

Oznaczono twoje pytanie 'mysql', ale twój kod nie jest' mysql' ... – Marco

+0

nie ma to nic wspólnego z mysql, a ty nie napisałeś jakiego framework używasz. Ty może użyć, więcejOrYwALNA minWartość I mniejOrZałOWA maksZałość zamiast między – cichy

Odpowiedz

35

Należy użyć

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

nie jestem pewien składni, więc przepraszam, jeśli to nie jest poprawne.
W każdym razie BETWEEN jest za pomocą> = min & & < = max.
To jest znaczenie mojego przykładu.

edycja:
Patrząc na this link Myślę, że można napisać:

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

tak, rozumiem! –

+0

@Viju Vijay: spróbuj mojej zredagowanej odpowiedzi i daj mi znać, czy działa ... – Marco

+0

tak działa :) –

5

Dźwięki poprawne, ale pewne problemy może tworzy wykonywanie kwerendy: Proponuję:

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

To użycie typu wywołuje problem SQL Injection Security –

0

Ty może również napotkać komunikat o błędzie. „Argument typu zderzenie: data jest niezgodna z int

apostrofów wokół terminach Np.. $this->db->where("$accommodation BETWEEN '$minvalue' AND '$maxvalue'");

5

W CodeIgniter Jest to prosty sposób na sprawdzenie aktualnych zapisów pomiędzy dwoma ...

$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)).'"'); 
Powiązane problemy