web-dev-qa-db-fra.com

en utilisant BETWEEN dans WHERE condition

Je voudrais la fonction suivante pour sélectionner des hôtels avec un hébergement entre un certain $minvalue et $maxvalue. Quelle serait la meilleure façon de faire cela?

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

   }
15
Viju Vijay

Tu devrais utiliser

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

Je ne suis pas sûr de la syntaxe, alors je vous demande pardon si ce n'est pas correct.
En tout cas BETWEEN est implémenté avec> = min && <= max.
Tel est le sens de mon exemple.

EDITED:
En regardant ce lien Je pense que vous pourriez écrire:

$this->db->where("$accommodation BETWEEN $minvalue AND $maxvalue");
43
Marco

Dans Codeigniter C'est un moyen simple de vérifier entre deux enregistrements de date ... 

$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)).'"');
7
Muhammad Fahad

Cela semble correct mais certains problèmes peuvent être liés à l’exécution de cette requête: 

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

Vous pouvez également rencontrer un message d'erreur. "Clash de type opérande: la date est incompatible avec int.

Utilisez des guillemets simples autour des dates. Exemple: $this->db->where("$accommodation BETWEEN '$minvalue' AND '$maxvalue'");

0
user3593238