Maison >développement back-end >tutoriel php >Comment utiliser les sous-requêtes NOT IN avec le générateur de requêtes de CodeIgniter ?

Comment utiliser les sous-requêtes NOT IN avec le générateur de requêtes de CodeIgniter ?

DDD
DDDoriginal
2024-11-29 12:19:11313parcourir

How to Use NOT IN Subqueries with CodeIgniter's Query Builder?

Utilisation des sous-requêtes NOT IN dans le générateur de requêtes de CodeIgniter

Dans les opérations de base de données, il est souvent nécessaire d'effectuer des sélections conditionnelles basées sur les données extraites d'autres tables. La sous-requête NOT IN de MySQL offre un moyen d'exclure des lignes d'une requête principale en fonction de leur absence dans une sous-requête.

Implémentation de CodeIgniter

Pour répliquer la requête MySQL mentionnée dans le question :

SELECT *<br>DE certs<br>WHERE id NOT IN (SELECT id_cer FROM revokace);<br>

en utilisant les méthodes de création de requêtes de CodeIgniter, vous pouvez utiliser l'approche suivante :

$this->db->select('*')
         ->from('certs')
         ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);

La méthode Where() permet de transmettre directement n'importe quelle chaîne à incorporer dans la requête, évitant ainsi les conflits potentiels avec la méthode CodeIgniter. mécanismes d’évasion. Cependant, il est conseillé de faire preuve de prudence lorsque vous utilisez cette approche avec des entrées fournies par l'utilisateur afin d'éviter les attaques par injection SQL.

Bibliothèque de sous-requêtes optimisée

Vous pouvez également envisager d'utiliser une sous-requête spécialisée. bibliothèque qui peut améliorer la lisibilité du code et simplifier les requêtes complexes. L'exemple donné se traduirait par ce qui suit :

$this->db->select('*')
         ->from('certs')
         ->where('id', $this->subquery->subquery('where_in', function ($subq) {
             $subq->select('id_cer')
                  ->from('revokace');
         }, 'id', FALSE));

Cette bibliothèque simplifie la construction de sous-requêtes et permet des instructions SQL plus flexibles et plus expressives. Que vous optiez pour l'approche par chaîne directe ou que vous utilisiez une bibliothèque, ces méthodes vous permettent d'implémenter efficacement les sous-requêtes NOT IN dans CodeIgniter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn