gpt4 book ai didi

php - SQL 查询检查列值是否在数组中

转载 作者:行者123 更新时间:2023-11-29 23:04:52 25 4
gpt4 key购买 nike

我现有的 SQL 查询:

$getEdu = "SELECT * FROM Request_Subject WHERE REQUEST_ID = $id
AND SUBJECT_ID IN (2,3,4)";

因此,在我的数据库中,每个 REQUEST_ID 可以与多个 SUBJECT_IDs 关联

并且 SUBJECT_ID 的值范围为 1 到 10

所以表中我现有的值是:

REQUEST_ID: 1 -> SUBJECT_IDs: 2,3
REQUEST_ID: 2 -> SUBJECT_IDs: 2,4
REQUEST_ID: 3 -> SUBJECT_IDs: 2,8

因此,目前当查询运行时,REQUEST_ID = 3 仍将包含在结果中,因为它具有 SUBJECT_ID = 2

有没有一种可能的方法让我创建一个 SQL 查询,即使一个值匹配,该查询也会忽略 REQUEST_ID,因为它与数组具有不同的值。

提前谢谢您。

更新

当前结果:

    $requestSubjects = array();

// So if I call REQUEST_ID = 3
$getEdu = "SELECT * FROM Request_Subject WHERE REQUEST_ID = 3
AND SUBJECT_ID IN (2,3,4)";

$getEdu_answer = mysqli_query($connection, $getEdu);

if(!$getEdu_answer || mysqli_num_rows($getEdu_answer)==0) {
echo "Error";
die();
}

else {
while($subjectRow = mysqli_fetch_assoc($getEdu_answer)) {
$subject = $subjectRow["Subject_ID"];

array_push($requestSubjects, $subject);
}

$reqSub = '{"reqSubject":' .json_encode($requestSubjects). '}';
echo $reqSub; // Returning a JSON to ajax
}

回显结果:

{"reqSubject":[2]}

结果正确,因为 REQUEST_ID=3SUBJECT_ID = 2 关联。

但是我想要的是,由于 REQUEST_ID=3 也与 SUBJECT_ID = 8 关联,因此它根本不应该回显结果。

最佳答案

如果我理解正确的话,您有 REQUEST_ID 的所有 SUBJECT_IDS 来匹配 (2,3,4),然后才打印结果?如果是这样,您可以为每个 SUBJECT_ID 构造查询

编辑:

  1. 您必须使用另一个 sqlquery 获取 REQUEST_ID 的全部个 SUBJECT_ID
  2. 将 SUBJECT_ID 联系到您的 $getEdu 查询,然后才执行 $getEdu 查询

示例:

$getEdu = "SELECT * FROM Request_Subject WHERE REQUEST_ID = $id";
//$sub_list is the all subect_id of $id
foreach ($sub_list as $sub_id){
$getEdu.=" AND $sub_id IN (2,3,4)";
}
$getEdu_answer = mysqli_query($connection, $getEdu);

如果您在示例中执行它,REQUEST_ID =3,比 $qetEdu 查询应该是:

SELECT * FROM Request_Subject WHERE REQUEST_ID = 3 AND 2 IN (2,3,4) AND 8 IN (2,3,4)

这意味着 REQUEST_ID = 3 不会返回,因为 8 不在 (2,3,4) 中

希望对大家有一点帮助。

关于php - SQL 查询检查列值是否在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com