Maison  >  Article  >  cadre php  >  Explication détaillée de la façon d'appeler les champs MySQL dans thinkphp

Explication détaillée de la façon d'appeler les champs MySQL dans thinkphp

PHPz
PHPzoriginal
2023-04-11 10:43:53778parcourir

ThinkPHP est un framework PHP open source. Son excellence ne réside pas seulement dans la qualité de son code, mais plus important encore dans sa facilité d'utilisation, sa configuration flexible et ses puissantes fonctions d'exploitation de base de données. Dans ThinkPHP, comment appeler les champs MySQL est une compétence importante que nous devons maîtriser.

1. Créer des tables et des données de base de données

Avant d'effectuer des opérations de base de données, nous devons créer la base de données et les tables de données correspondantes. Supposons que nous ayons un système de gestion des étudiants et que nous devions créer une table de données nommée student pour stocker des informations de base sur les étudiants. Le tableau contient les champs suivants :

id : clé primaire, auto-croissante.

name : nom de l'étudiant, type varchar, longueur 20.

âge : âge de l'étudiant, type int.

sexe : sexe étudiant, type varchar, longueur 2.

t_score : résultat du test CET-4, type int.

total_score : score total de l'élève, type int.

Nous pouvons utiliser l'instruction SQL suivante pour créer la table de données :

CREATE TABLE student (
id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Auto -increment ID',
name varchar(20) NOT NULL DEFAULT '' COMMENT 'Nom de l'étudiant',
age int(11) NOT NULL DEFAULT ' 0' COMMENT 'Âge de l'étudiant',
sex varchar(2) NOT NULL DEFAULT '' COMMENT 'Sexe de l'étudiant',
t_score int (11 ) NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Résultat du test CET-4',
total_score int(11) NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Score total de l'élève',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Student Information Table';student (
 id int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
 name varchar(20) NOT NULL DEFAULT '' COMMENT '学生姓名',
 age int(11) NOT NULL DEFAULT '0' COMMENT '学生年龄',
 sex varchar(2) NOT NULL DEFAULT '' COMMENT '学生性别',
 t_score int(11) NOT NULL DEFAULT '0' COMMENT 'CET-4考试成绩',
 total_score int(11) NOT NULL DEFAULT '0' COMMENT '学生成绩总和',
 PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';

我们随机插入一些数据,用于后续测试:

INSERT INTO student (name, age, sex, t_score, total_score) VALUES ('张三', 20, '男', 550, 750), ('李四', 19, '女', 530, 700), ('王五', 22, '男', 610, 820), ('赵六', 23, '女', 590, 780), ('钱七', 21, '男', 500, 730);

二、在ThinkPHP中调用MySQL字段

在ThinkPHP中,我们可以通过Db类提供的方法来对数据库进行增、删、改、查等操作。在进行查询操作时,我们需要调用MySQL字段。以下列出了一些常用的调用方式:

1.使用数组方式直接调用:

我们可以使用数组方式来直接调用MySQL字段。例如,我们要从student表中查询id、name、age等字段,可以使用如下方法:

$studentList = Db::name('student')->field(['id', 'name', 'age'])->select();

$field参数为可选,不传入该参数表示查询所有字段。

2.使用字符串方式调用:

第二种方式为直接使用字符串方式调用MySQL字段,例如:

//查询id,name和age字段
$studentList = Db::name('student')->field('id, name, age')->select();

//查询t_score,total_score和总分字段(总分为t_score和total_score相加的结果)
$studentList = Db::name('student')->field('t_score, total_score, (t_score+total_score) as score')->select();

在使用字符串方式调用MySQL字段时,我们可以通过as为某字段别名(alias)。

3.使用模型方式调用:

使用模型方式调用时,我们需要先定义模型类。例如,我们可以根据student表的结构定义一个Student模型类:

namespace appcommonmodel;

use thinkModel;

class Student extends Model
{

//定义表名和主键
protected $table = 'student';
protected $pk = 'id';

}

接下来,我们可以使用Student模型类直接操作查询:

//获取所有学生列表信息
$studentList = Student::field(['id', 'name', 'age'])->select();

//获取学生姓名和总分
$studentList = Student::field('name, (t_score+total_score) as score')->select();

通过模型方式调用MySQL字段可以使我们的代码更加简洁优雅,而且能够有效防止SQL注入问题。

三、在ThinkPHP中进行MySQL字段别名操作

在进行SQL语句查询时,我们有时需要使用一些列别名作为返回结果。例如,我们要在查询结果中显示学生姓名和比该名学生分数高的其他学生数目,我们可以添加一个别名(alias):

$studentList = Db::name('student')->field('name, (SELECT count(*) FROM student as b WHERE b.total_score>s.total_score) as rank')->alias('s')->select();

以上代码通过子查询和alias方法,可以得到人名和排名,其对应的SQL语句为:

SELECT name, (SELECT count(*) FROM student as b WHERE b.total_score>s.total_score) as rank FROM student

Nous insérons au hasard certaines données pour des tests ultérieurs :🎜🎜INSERT INTO étudiant (nom, âge, sexe, t_score, total_score) VALEURS ('张三', 20, 'masculin', 550, 750), ('李四', 19, 'femelle', 530, 700), ('王五', 22, 'masculin', 610 , 820), ('Zhao Liu', 23 ans, 'Femme', 590, 780), ('Qian Qi', 21 ans, 'Homme', 500, 730);🎜🎜2. Appelez les champs MySQL dans ThinkPHP🎜🎜 Dans ThinkPHP, nous pouvons utiliser les méthodes fournies par la classe Db pour effectuer des opérations telles que l'ajout, la suppression, la modification et l'interrogation de la base de données. Lors de l'exécution d'opérations de requête, nous devons appeler les champs MySQL. Ce qui suit répertorie quelques méthodes d'appel courantes : 🎜🎜1. Utilisez la méthode tableau pour appeler directement : 🎜🎜Nous pouvons utiliser la méthode tableau pour appeler directement les champs MySQL. Par exemple, si nous voulons interroger l'identifiant, le nom, l'âge et d'autres champs de la table des étudiants, nous pouvons utiliser la méthode suivante : 🎜🎜$studentList = Db::name('student')->field(['id ', 'name', 'age'])->select();🎜🎜Le paramètre $field est facultatif. Ne pas transmettre ce paramètre signifie interroger tous les champs. 🎜🎜2. Appel à l'aide de la méthode de chaîne : 🎜🎜La deuxième méthode consiste à utiliser directement la méthode de chaîne pour appeler les champs MySQL, par exemple : 🎜🎜//Champs d'identifiant, de nom et d'âge de la requête
$studentList = Db::name ('student')->field('id, name, age')->select();🎜🎜//Interrogez les champs t_score, total_score et total score (le score total est le résultat de l'ajout de t_score et total_score )$studentList = Db::name('student')->field('t_score, total_score, (t_score+total_score) as score')->select();🎜🎜Appelez MySQL à l'aide de la méthode de chaîne champ, nous pouvons utiliser as pour alias un champ (alias). 🎜🎜3. Appel à l'aide de la méthode modèle : 🎜🎜Lors de l'appel à l'aide de la méthode modèle, nous devons d'abord définir la classe modèle. Par exemple, nous pouvons définir une classe modèle Student basée sur la structure de la table student : 🎜🎜namespace appcommonmodel;🎜🎜use thinkModel;🎜🎜class Student extends Model
{🎜rrreee🎜}🎜🎜Ensuite, nous pouvons utilisez la requête d'opération directe de classe du modèle étudiant : 🎜🎜//Obtenez toutes les informations sur la liste des étudiants
$studentList = Student::field(['id', 'name', 'age'])->select() ;🎜🎜/ /Obtenir le nom de l'étudiant et le score total
$studentList = Student::field('name, (t_score+total_score) as score')->select();🎜🎜Appel du champ MySQL via le Le modèle peut rendre notre code plus concis et élégant, et peut prévenir efficacement les problèmes d'injection SQL. 🎜🎜3. Effectuer des opérations d'alias de champ MySQL dans ThinkPHP🎜🎜Lors de l'exécution de requêtes d'instructions SQL, nous devons parfois utiliser certains alias de colonne comme résultats de retour. Par exemple, si nous souhaitons afficher le nom de l'étudiant et le nombre d'autres étudiants ayant des scores plus élevés que lui dans les résultats de la requête, nous pouvons ajouter un alias : 🎜🎜$studentList = Db::name('student')-> ;field ('nom, (SELECT count(*) FROM student as b WHERE b.total_score>s.total_score) as Rank')->alias('s')->select();🎜🎜Le code ci-dessus passe la sous-requête Avec la méthode alias, vous pouvez obtenir le nom et le classement de la personne. L'instruction SQL correspondante est : 🎜🎜SELECT name, (SELECT count(*) FROM student as b WHERE b.total_score> s.total_score) comme rang FROM étudiant s🎜

Dans ThinkPHP, nous pouvons ajouter des alias spécifiques aux champs MySQL via la méthode alias pour obtenir des opérations de requête plus efficaces.

4. Résumé

Dans cet article, nous avons expliqué trois méthodes d'appel de champs MySQL dans ThinkPHP : l'appel en mode tableau, l'appel en mode chaîne et l'appel en mode modèle, et avons introduit l'opération d'ajout d'alias de champ MySQL. Ces méthodes ont leurs propres scénarios applicables et peuvent être sélectionnées de manière flexible en fonction de différents besoins. Il ressort également de cela que ThinkPHP, en tant qu'excellent framework PHP, dispose de capacités d'exploitation de bases de données très puissantes et flexibles.

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