WHERE NOT IN命令在PHP中不起作用,但在SQL中起作用
所以我试图从一个表中选择一些在另一个表的选择中不存在的值 这是我运行的SQL命令:WHERE NOT IN命令在PHP中不起作用,但在SQL中起作用,php,mysql,sql,Php,Mysql,Sql,所以我试图从一个表中选择一些在另一个表的选择中不存在的值 这是我运行的SQL命令: SELECT `u882219588_data`.`user`.`user_name`, `u882219588_data`.`user`.`email`, `u882219588_data`.`user`.`name`FROM `u882219588_data`.`user` WHERE `u882219588_data`.`user`.`user_name` NOT IN (SEL
SELECT `u882219588_data`.`user`.`user_name`, `u882219588_data`.`user`.`email`,
`u882219588_data`.`user`.`name`FROM `u882219588_data`.`user`
WHERE `u882219588_data`.`user`.`user_name`
NOT IN (SELECT
`u882219588_data`.`user_groups`.`user_name`
FROM `u882219588_data`.`user_groups`
WHERE
`u882219588_data`.`user_groups`.`group_id` = '$group_id');
它在PHPMyAdmin中工作得非常好!但当我在PHP中使用它时:
//Login information on top
if (isset($_GET['group_id'])) {
$array = array();
$response = array();
$groupid = $_GET['group_id'];
$result = mysqli_query($con,
"SELECT `u882219588_data`.`user`.`user_name`,
`u882219588_data`.`user`.`email`, `u882219588_data`.`user`.`name`
FROM `u882219588_data`.`user`
WHERE `u882219588_data`.`user`.`user_name`
NOT IN (SELECT
`u882219588_data`.`user_groups`.`user_name`
FROM `u882219588_data`.`user_groups`
WHERE
`u882219588_data`.`user_groups`.`group_id` = '$group_id');");
while($obj = mysqli_fetch_object($result)) {
$array[] = $obj;
}
$response["success"]=1;
$response["result"]=$array;
$response["group_id"] = $groupid;
print(json_encode($response));
}
mysqli_close($con);
它实际上从用户
表中选择每一行!我不明白这里发生了什么。
我甚至试着改变一下PHP,使用另一种方法,但同样的结果发生了
后来我发现
SELECT
`u882219588_data`.`user_groups`.`user_name`
FROM
`u882219588_data`.`user_groups`
WHERE
`u882219588_data`.`user_groups`.`group_id` = '$group_id'
实际上返回了一个空集,但我不知道为什么,因为它在PHPMyAdmin中工作
有人看到错误了吗?输入错误:您的变量被调用
$groupid = $_GET['group_id'];
但您在查询中使用的是$group\u id
也请阅读@tadman的评论,否则sql注入会导致安全问题。使用
mysqli
时,您应该使用参数化查询,并将用户数据添加到查询中。不要使用字符串插值来完成此操作,因为这样会创建严重的错误。为了您的利益,我希望此代码不在公共互联网附近。您的代码中有一个输入错误@$groupid是您声明的变量,您使用的是$groupu\id。请参阅下面的@bidfix-answer。