如何在MySQL和PHP中从多个表中检索数据?
TLDR:请为我的问题提供最简单的教程。我读过很多教程,但它们所做的只是让我更加困惑。 我有三张桌子如何在MySQL和PHP中从多个表中检索数据?,php,mysql,Php,Mysql,TLDR:请为我的问题提供最简单的教程。我读过很多教程,但它们所做的只是让我更加困惑。 我有三张桌子 学生(有一行id和姓名) 课程(有一行id和名称) 课程与学生 链接两者的第三个表是这样创建的: CREATE TABLE courses_students ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, student_id INT(6) REFERENCES students(id), course_id INT(6) RE
CREATE TABLE courses_students (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
student_id INT(6) REFERENCES students(id),
course_id INT(6) REFERENCES courses(id)
);
INSERT INTO courses_students (course_id, student_id) VALUES (2, 3);
然后我添加一个简单的数据,如下所示:
CREATE TABLE courses_students (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
student_id INT(6) REFERENCES students(id),
course_id INT(6) REFERENCES courses(id)
);
INSERT INTO courses_students (course_id, student_id) VALUES (2, 3);
2和3分别是课程表和学生表中的ID。如何使用mysqli+PHP语句检索这些id的信息(2个来自课程表,3个来自学生表)?这很简单,有很多种方法,下面是最简单的一种(假设您已经“建立”了此处所述的连接): 当您需要使用参数进行查询时,这会变得有点复杂-然后您应该阅读更多关于绑定的内容,但总体思路类似于以下代码:
// Preparing the statement.
$stmt = $pdo->prepare("
SELECT s.id AS studentId, s.name AS studentName, c.id AS courseId, c.name AS courseName
FROM courses_students AS cs
LEFT JOIN students AS s ON s.id = cs.student_id
LEFT JOIN courses AS c ON c.id = cs.course_id
WHERE cs.student_id = :studentId
AND cs.course_id = :courseId
");
// Binding and executing the statement.
$stmt->execute([
'studentId' => 3,
'courseId' => 2
]);
$records = $stmt->fetchAll();
看见请注意,INT声明后面的括号中的数字几乎没有意义,可能最好省略。“请为我的问题指出最简单的教程”-请阅读:-“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源是堆栈溢出的主题”这让AS有点混乱,但当我删除AS并将表名更改为完整名称后,我就能够弄清楚了!谢谢当然,我给出别名的原因(使用AS)允许我编写您想要的查询的速记版本,但只要它对您有效,那就太好了!