Comment thinkphp interroge-t-il la base de données ?
Requête de base de données
ThinkPHP intègre des méthodes de requête très flexibles, qui peuvent effectuer rapidement des opérations de requête de données.
Les conditions de requête peuvent être utilisées pour toute opération telle que CURD et peuvent être transmises en tant que paramètres de la méthode Where.
ThinkPHP peut prendre en charge l'utilisation directe de chaînes comme conditions de requête, mais dans la plupart des cas, il est recommandé d'utiliser des tableaux d'index ou des objets comme conditions de requête car c'est plus sûr.
Méthode de requête
1. Utiliser des chaînes comme conditions de requête
C'est la méthode la plus traditionnelle, mais elle est plus sûre. Pas élevé, par exemple :
$User = M("User"); // 实例化User对象 $User->where('type=1 AND status=1')->select();
La dernière instruction SQL générée est
SELECT * FROM think_user WHERE type=1 AND status=1
2. Utiliser des tableaux comme conditions de requête
$User = M("User"); // 实例化User对象 $condition['name'] = 'thinkphp'; $condition['status'] = 1; // 把查询条件传入查询方法 $User->where($condition)->select();
Le dernier SQL généré instruction Yes
SELECT * FROM think_user WHERE 'name'='thinkphp' AND status=1
Si vous effectuez une requête multi-champs, la relation logique par défaut entre les champs est ET logique, mais le jugement logique par défaut peut être modifié à l'aide des règles suivantes, en utilisant _logic pour définir la logique de la requête :
$User = M("User"); // 实例化User对象 $condition['name'] = 'thinkphp'; $condition['account'] = 'thinkphp'; $condition['_logic'] = 'OR'; //定义查询逻辑 // 把查询条件传入查询方法 $User->where($condition)->select();
L'instruction SQL finale générée est
SELECT * FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'
3. Utilisez la méthode objet pour interroger (ici, prenez l'objet intégré stdClass comme exemple. )
$User = M("User"); // 实例化User对象 // 定义查询条件 $condition = new stdClass(); $condition->name = 'thinkphp'; $condition->status= 1; $User->where($condition)->select();
L'instruction SQL finale générée est la même que ci-dessus
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
L'effet de l'utilisation de la requête en mode objet et de l'utilisation de la requête tableau est le même et interchangeable Dans la plupart des cas, nous. Nous recommandons d'utiliser le mode tableau pour être plus efficace. Nous utiliserons plus tard la méthode tableau comme exemple pour expliquer l'utilisation spécifique du langage de requête.
Requête d'expression
La condition de requête ci-dessus n'est qu'un simple jugement d'égalité. Les expressions de requête peuvent être utilisées pour prendre en charge davantage de syntaxe de requête SQL et peuvent être utilisées dans un tableau ou dans une requête. En mode objet (seul le mode tableau est utilisé comme exemple ci-dessous), le format de l'expression de requête est :
$map['字段名'] = array('表达式','查询条件');
L'expression n'est pas sensible à la casse. Les expressions de requête prises en charge sont respectivement les suivantes : <.>
$map['id'] = array('eq',100); id = 100; $map['id'] = array('egt',100);id >= 100 $map['name'] = array('like','thinkphp%'); name like 'thinkphp%' 模糊查询 $map['a'] =array('like',array('%thinkphp%','%tp'),'OR');$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND'); (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')Cet article provient de la colonne d'articles techniques du framework ThinkPHP :
http://www.php.cn/phpkj/thinkphp /
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!