无法实现一些可以在phpMyAdmin中工作的代码,但是在PHP中失败。 (这是我的第一个PHP项目,找不到合适的答案)

基本上我有3张桌子:

memberdetails = mem_id,姓氏,名字.....

classdetails = class_id,classname ...

classmember = class_id,mem_id

我可以使用以下代码显示课程列表

<?php
    $c_query = $conn->query("SELECT * FROM `classdetails` WHERE `class_id`= '$_REQUEST[class_id]'") or die(mysqli_error());
    c_fetch = $c_query->fetch_array();
    $class = $c_fetch['class_id'];
?>
.......
<?php
  $query = $conn->query("SELECT * FROM `memberdetails` WHERE `mem_id` in (select mem_id from classmember where class_id= '$class')") or die(mysqli_error());
  while($f_query = $query->fetch_array()){
?>
<tr>
   <td><?php echo $f_query['firstname']?></td>
   <td><?php echo $f_query['lastname']?></td>
</tr>
<?php
  }
?>


一切正常,但稍后我需要显示不在先前选择的班级中的所有其他“成员”的列表。

在myPHPAdmin中,以下工作正常

SELECT * FROM memberdetails WHERE mem_id NOT IN (SELECT mem_id FROM classmember WHERE class_id = 3) ORDER BY lastname, firstname ASC


但是我正在丢失试图使它在PHP中工作的阴谋

<?php
  $g_query = $conn->query('SELECT * FROM memberdetails WHERE mem_id NOT IN (SELECT * FROM memberdetails WHERE mem_id in (select mem_id from classmember where class_id= '$class') ORDER BY lastname, firstname ASC') or die(mysqli_error());
  while($g_fetch = $g_query->fetch_array()){
    echo "<option value = ".$g_fetch['mem_id'].">".$g_fetch['firstname'].' '.$g_fetch['lastname']."          </option>";
    }
   ?>


但是,我无法在页面中使用它。我尝试了各种方式来格式化查询。

我敢说这很简单,但是现在,如果我有头发,我会把它拔出来!

最佳答案

我可以在您的查询中找到两个错误


使用列名代替*


当您使用子查询并希望与列匹配时,则必须写出要与之进行比较的确切列名,否则将产生错误。


您没有正确结束括号。


正确关闭方括号。

根据评论,您还有另外一期。


将$ class更改为。$ class


尝试以下。

<?php
  $g_query = $conn->query('SELECT * FROM memberdetails WHERE mem_id NOT IN (SELECT mem_id FROM memberdetails WHERE mem_id in (select mem_id from classmember where class_id= '.$class.')) ORDER BY lastname, firstname ASC') or die(mysqli_error());
  while($g_fetch = $g_query->fetch_array()){
    echo "<option value = ".$g_fetch['mem_id'].">".$g_fetch['firstname'].' '.$g_fetch['lastname']."          </option>";
    }
   ?>

关于php - PHP MySQL选择不在的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47073407/

10-11 03:24