-1

我正在尝试构建一个 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 做错了什么。提前谢谢了!

4

3 回答 3

1

$query_addteacher = "SELECT @staff := idStaff FROM Staff WHERE Staff = '$teacher', @class := idClass FROM Class WHERE Class = '$class'; 插入 Staffclass (idStaff, idClass) 值 ($teacher, $class )";

此片段中有两个查询。尝试分别查询它们

于 2013-10-14T15:38:20.773 回答
1
$result = $query_addteacher;

您还没有运行查询,$result 将评估为 true,因为它是一个评估为 true 的字符串。

$result = mysql_query($query_addteacher); // maybe?

此外,停止使用 mysql_() 函数并使用 mysqli 或 PDO。

于 2013-10-14T15:39:01.333 回答
0

您不能只将结果设置为查询变量。查询必须在服务器上执行。

考虑做这样的事情: $result = mysql_query($query_addteacher);

于 2013-10-14T15:42:39.887 回答