J'ai la requête suivante et son fonctionnement dans MySQL
$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')");
Mais si je convertis de manière Codeigniter, la requête ne fonctionne pas, comment puis-je écrire cette requête dans Codeigniter? J'ai essayé avec le code suivant mais affichant "Erreur de base de données"
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');
Où je me trompe? Merci d'avance
3 Réponses :
vous pouvez vous reporter à cette page concernant le générateur de requêtes CI.
p> Sur la base de votre question, vous essayez de convertir la requête MySQL en constructeur de requêtes CI, n'est-ce pas? Essayons, en fonction de votre code, vous sélectionnez une donnée avec une condition, donc cela ressemble à ceci:
$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();
En gros, cela retournera des données sur le type d'objet. Utilisez result_array () si vous souhaitez le convertir en tableau.
Si vous obtenez une erreur Database Error , vérifiez votre database.php sous application / config , vous devez configurer votre configuration de base de données par défaut . Vous pouvez consulter ici.
REMARQUE : N'oubliez pas de charger votre base de données comme d'habitude ou de la configurer sur autoload.php^
Voyons s'il y a une amélioration .
Il est facile d'écrire votre propre requête personnalisée dans Codeigniter, vous pouvez essayer ceci. Créez une fonction à l'intérieur de votre modèle avec comme ceci
$this->customModel->customQuery();
Chargez ce modèle dans le contrôleur et appelez maintenant cette fonction depuis votre contrôleur comme ceci!
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();
}
cela renverra le tableau de résultats. Merci
Dans votre modèle, créez une fonction
$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();
}
Dans votre contrôleur, chargez le même modèle et appelez la méthode ci-dessus
function customData($str)
{
$query = $this->db->query($str);
return $query->result_array();
}
Quelle erreur obtenez-vous?
@NageshKatke: j'obtiens "Erreur de base de données"
Avez-vous chargé votre base de données?