基本上,我有一个程序,你必须输入学生的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
答案 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)");