INSERT查询返回TRUE但不起作用?

时间:2013-10-14 15:33:49

标签: php mysql sql

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

3 个答案:

答案 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);