Rumah > Artikel > rangka kerja php > Bagaimana untuk memanggil medan mysql dalam thinkphp
1. Cipta jadual dan data pangkalan data
Sebelum melaksanakan operasi pangkalan data, kita perlu mencipta pangkalan data dan jadual data yang sepadan. Kami menganggap bahawa kami perlu membangunkan sistem pengurusan pelajar, di mana jadual pangkalan data bernama pelajar perlu diwujudkan untuk menyimpan maklumat asas tentang pelajar. Jadual mengandungi medan berikut:
id: kunci utama, meningkat sendiri.
nama: nama pelajar, jenis varchar, panjang 20.
umur: umur pelajar, jenis int.
jantina: jantina pelajar, jenis varchar, panjang 2.
t_skor: Skor ujian CET-4, jenis int.
total_score: jumlah markah pelajar, jenis int.
Kami boleh menggunakan pernyataan SQL berikut untuk mencipta jadual data:
CREATE 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='学生信息表';
Kami secara rawak memasukkan beberapa data untuk ujian seterusnya:
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);
2. Dalam ThinkPHP By memanggil medan MySQL
kita boleh menggunakan kaedah yang disediakan oleh kelas Db untuk menambah, memadam, mengubah suai, menyemak dan operasi lain pada pangkalan data dalam ThinkPHP. Apabila melakukan operasi pertanyaan, kita perlu memanggil medan MySQL. Berikut menyenaraikan beberapa kaedah panggilan biasa:
1 Gunakan kaedah tatasusunan untuk memanggil terus:
Kami boleh menggunakan kaedah tatasusunan untuk memanggil terus medan MySQL. Menanyakan id, nama, umur dan medan lain dalam jadual pelajar boleh dilaksanakan dengan cara berikut:
$studentList = Db::name('student')->field(['id', 'name' , 'age'])->select();
Parameter $field adalah pilihan Jika tidak melepasi parameter ini bermakna menanyakan semua medan.
2. Gunakan kaedah rentetan untuk memanggil:
Kaedah kedua ialah dengan terus menggunakan kaedah rentetan untuk memanggil medan MySQL, contohnya:
//Id pertanyaan, nama dan Medan umur
$studentList = Db::name('student')->field('id, name, age')->select();
//Query t_score, total_score and jumlah Sub-medan (jumlah markah ialah hasil daripada penambahan t_score dan total_score)
$studentList = Db::name('student')->field('t_score, total_score, (t_score+total_score) sebagai skor') -> ;select();
Apabila memanggil medan MySQL menggunakan kaedah rentetan, kita boleh gunakan sebagai alias medan (alias).
3. Panggilan menggunakan kaedah model:
Apabila memanggil menggunakan kaedah model, kita perlu menentukan kelas model terlebih dahulu. Kelas model bernama Student boleh ditakrifkan mengikut struktur jadual pelajar
namespace appcommonmodel;
gunakan thinkModel;
class Student extends Model
{
//定义表名和主键 protected $table = 'student'; protected $pk = 'id';
}
Seterusnya, kita boleh menggunakan kelas model Pelajar untuk mengendalikan pertanyaan secara terus:
//Dapatkan semua maklumat senarai pelajar
$studentList = Student::field ([' id', 'name', 'age'])->select();
//Dapatkan nama pelajar dan jumlah markah
$studentList = Student::field('name, (t_score+ total_score) sebagai skor')->select();
Memanggil medan MySQL melalui model boleh menjadikan kod kami lebih ringkas dan elegan, serta boleh menghalang masalah suntikan SQL dengan berkesan.
3. Lakukan operasi alias medan MySQL dalam ThinkPHP
Apabila melaksanakan pernyataan pertanyaan SQL, kadangkala kita perlu menggunakan alias lajur sebagai pengecam hasil yang dikembalikan. Sebagai contoh, jika kita ingin memaparkan nama pelajar dan bilangan pelajar lain yang mempunyai markah lebih tinggi daripada pelajar dalam hasil pertanyaan, kita boleh menambah 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();
Kod di atas boleh diperolehi melalui subkueri dan kaedah alias Pernyataan SQL yang sepadan untuk nama dan kedudukan orang itu ialah:
SELECT name, (SELECT count(*) FROM student as b WHERE b.total_score>s.total_score) as rank FROM student s
Dalam ThinkPHP, dengan menggunakan kaedah alias, kita boleh menetapkan alias yang ditentukan untuk medan MySQL untuk mencapai operasi pertanyaan yang lebih cekap.
Atas ialah kandungan terperinci Bagaimana untuk memanggil medan mysql dalam thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!