Comment exécuter des instructions SQL natives dans thinkphp ?
$Model = new Model();//或者 $Model = D(); 或者 $Model = M(); $sql = "select * from `order`"; $voList = $Model->query($sql);
Juste besoin de new pour hériter des méthodes de Model à partir d'un modèle vide.
Remarquequery est la fonction de requête, exécuter est la fonction d'ajout, de suppression et de modification
Instances d'interrogation et de lecture des valeurs d'attribut :
$sql = "select * from goods"; $Model = M(); $result = $Model->query($sql); foreach ($result as $k=>$val){ $goods_id = $val["goods_id"]; }
Le modèle de tP peut prendre en charge les opérations SQL natives et fournit deux méthodes : interroger et exécuter. Pourquoi le SQL natif fait-il la distinction entre deux méthodes :
1. Différents types de retour
la requête est utilisée pour interroger , et renvoie l'ensemble de données , qui est le même que select ou findall, afin qu'il puisse utiliser la balise volist directement dans le modèle pour afficher les résultats de la requête
execute est utilisé pour les opérations d'écriture , renvoie l'état ou le nombre d'enregistrements concernés
2. Des statistiques de lecture et d'écriture sont nécessaires
Afin de faciliter les statistiques du nombre actuel de lectures et d'écritures de données, les opérations de lecture et d'écriture de la base de données sont séparés (correspondant à l'interrogation et à l'exécution)
L'utilisation du SQL natif est très simple, nous n'avons même pas besoin d'instancier de modèles, par exemple :
$Model = new Model(); // 实例化一个空模型
Les méthodes suivantes sont équivalentes
$Model = D();// 或者 $Model = M(); // 下面执行原生SQL操作 $Model->query('select * from think_user where status=1'); $Model->execute('update think_user set status=1 where id=1');
Si vous instanciez un modèle, vous pouvez toujours effectuer des opérations SQL natives sans être affecté, par exemple :
$User = D('User'); $User->query('select * from think_user where status=1'); $User->execute('update think_user set status=1 where id=1');
Dans ce cas, on peut simplifier l'écriture des instructions SQL, par exemple :
$User->query('select * from __TABLE__ where status=1'); $User->execute('update __TABLE__ set status=1 where id=1');
Le Le système remplacera automatiquement __TABLE__ par le nom actuel de la table de données correspondant au modèle. La table de données réelle est déterminée par le modèle.
De manière générale, nous utilisons des opérations SQL natives pour implémenter certaines opérations difficiles à mettre en œuvre avec ORM et CURD De plus, si le SQL n'est pas complexe, l'efficacité et. cohérence du SQL natif La différence d'efficacité opérationnelle est minime et l'implémentation ORM de TP elle-même est également assez efficace.
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!