无法实现一些可以在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/