所以我试图从一个表中选择一些在另一个表的选择中不存在的值。
这是我运行的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 (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);
它实际上选择了user
表中的每一行!我不知道这里发生了什么。
我甚至尝试改变PHP,使用另一种方法,但同样的结果发生。
后来,我发现了
SELECT
`u882219588_data`.`user_groups`.`user_name`
FROM
`u882219588_data`.`user_groups`
WHERE
`u882219588_data`.`user_groups`.`group_id` = '$group_id'
实际上是返回一个空集,但我不知道为什么因为它在PHPMyAdmin中有效。
有人看到错误吗?
答案 0 :(得分:1)
错字:你的变量被称为
$groupid = $_GET['group_id'];
但您在查询中使用$group_id
。
另请阅读@ tadman的评论,否则您将通过sql-injection遇到安全问题。