没有从另一个表中获取ID

时间:2017-03-22 01:37:43

标签: php mysql database

基本上,我有一个程序,你必须输入学生的ID,姓名和老师的名字和姓氏。当用户执行并点击提交时,服务器将查询到我的MySQL数据库并获取具有用户输入的名字和姓氏的教师ID,并将其存储在学生表中。

学生表在学生入学前清空

student_id | first_name | last_name | teacher_id

教师表

teacher_id | first_name | last_name
     1     |    name    |    nameLast

因此,当用户使用教师的名字name和姓氏nameLast输入学生的信息时,它应该得到teacher_id 1,并将其存储在{ {1}}。但事实并非如此。有什么想法吗?

PHP代码

students table

2 个答案:

答案 0 :(得分:0)

$teacher_check = mysqli_query($link, "SELECT $first_name AND $last_name FROM teachers");

应该是

$teacher_check = mysqli_query($link, "SELECT first_name, last_name FROM teachers");

你不应该在你的查询中使用美元符号到数据库,正如Qirrel所指出的那样,用昏迷替换AND。

答案 1 :(得分:0)

改变这个......

$teacher_check = mysqli_query($link, "SELECT $first_name AND $last_name FROM teachers");

对此...

$teacher_check = mysqli_query($link, "SELECT teacher_id FROM teachers WHERE first_name='$teacher_first_name' AND last_name='$teacher_last_name'");

另外,请注意您的代码容易受到SQL注入攻击。您应该采取必要的步骤来保护您的代码。使用manual是一种很好的方法。

<强>更新

在此之后...

if($teacher_check) {

添加此...

$row = $teacher_check->fetch_object()

然后改变这个......

$result = mysqli_query($link, "INSERT INTO students (student_id, first_name, last_name, teacher_id) SELECT $student_id, '$first_name', '$last_name', 'teacher_id' FROM teachers WHERE first_name = '$teacher_first_name' AND last_name = '$teacher_last_name'");

对此...

$result = mysqli_query($link, "INSERT INTO students (student_id, first_name, last_name, teacher_id) VALUES ($student_id, '$first_name','$last_name', $row->teacher_id)");