我正在尝试构建一个INSERT记录查询,用户可以使用两个下拉菜单向数据库添加新条目。这样做的方式是,取决于谁登录,$ _SESSION变量接管并在下拉菜单中显示正确的信息。
我想要它做的是,一旦学校员工登录,选择了主题区域并选择了他们想要管理的年级组,它会显示两个动态下拉菜单,其中包含所有可能的教师可以在第一个菜单中教授该特定主题,并在第二个菜单中教授该年中所有主题类的列表。然后,用户可以选择教师和班级,然后按提交按钮将查询发送到数据库进行输入。
当IF命令提示测试查询是否有效时,它会将查询识别为TRUE,回显SUCCESS行并重定向到上一页:
$result = $query_addteacher;
if (!$result) {
die('Invalid query:'. mysql_error());
}
else
{ echo "Success!";
header("location:addteachertest.php"); }
但是数据实际上并没有被输入数据库。下面是下拉菜单和查询的代码:
// Connect Command //
mysql_connect($host, $username, $password) OR die("Can't connect");
mysql_select_db($database_name) OR die("Can't connect to Database");
$teacher = $_POST['teacher'];
$class = $_POST['class'];
// Query to insert data into the staffclass table //
$query_addteacher = "SELECT @staff := idStaff FROM Staff WHERE Staff = '$teacher', @class := idClass
FROM Class WHERE Class = '$class';
INSERT INTO Staffclass (idStaff, idClass)
VALUES ($teacher, $class)";
Teacher:
<select name="teacher" id="teacher" form="addteacher" title="Teacher">
<?php do { ?>
<option value="<?php echo $row_teacherlist['Staff']?>"><?php echo $row_teacherlist['Staff']?>
</option>
<?php
} while ($row_teacherlist = mysql_fetch_array($teacherlist));
$rows = mysql_num_rows($teacherlist);
if($rows > 0)
{
mysql_data_seek($teacherlist, 0);
$row_teacherlist = mysql_fetch_array($teacherlist);
}
?>
</select>
Class:
<select name="class" id="class" form="addteacher" title="Class">
<?php do { ?>
<option value="<?php echo $row_classlist['Class']?>"><?php echo $row_classlist['Class']?></option>
<?php
} while ($row_classlist = mysql_fetch_array($classlist));
$rows = mysql_num_rows($classlist);
if($rows > 0) {
mysql_data_seek($classlist, 0);
$row_classlist = mysql_fetch_array($classlist);
}
?>
</select>
我有一种直觉,即通过使用简单的MySQL命令,我希望查询运行的方式有问题。当我手动将它输入MySQL时,它以这种格式工作(尽管教师和类的变量不可变),所以我想知道我通过PHP做错了什么。非常感谢提前!
答案 0 :(得分:1)
$ query_addteacher =“SELECT @staff:= idStaff FROM Staff WHERE Staff ='$ teacher',@ class:= idClass FROM Class WHERE Class ='$ class'; INSERT INTO Staffclass(idStaff,idClass) VALUES($ teacher,$ class)“;
此片段中有两个查询。 尝试分别查询它们
答案 1 :(得分:1)
$result = $query_addteacher;
您尚未运行查询,$ result将评估为true,因为它是一个计算结果为true的字符串。
$result = mysql_query($query_addteacher); // maybe?
另外,使用mysql_()funcs停止并使用mysqli或PDO。
答案 2 :(得分:0)
您不能只将结果设置为查询变量。查询必须在服务器上执行。
考虑做这样的事情: $ result = mysql_query($ query_addteacher);