MySQL php数组-从与查询不匹配的数组中查找值

MySQL php数组-从与查询不匹配的数组中查找值,php,mysql,mysqli,Php,Mysql,Mysqli,我目前正在一个实时站点上工作,需要在实现之前仔细检查我的代码。我无法在JSFIDLE上执行此操作:( 我有两个变量: $user_id (users user id - one only) $job_id (an array of job ids that could number from 0 to numerous) 我需要做的是检查数据库是否存在与作业id和用户id匹配的实体。如果不匹配,则我需要返回每个不匹配的作业id: $job_id=join(',',$job_id); $quer

我目前正在一个实时站点上工作,需要在实现之前仔细检查我的代码。我无法在JSFIDLE上执行此操作:(

我有两个变量:

$user_id (users user id - one only)
$job_id (an array of job ids that could number from 0 to numerous)
我需要做的是检查数据库是否存在与
作业id
用户id
匹配的实体。如果不匹配,则我需要返回每个不匹配的
作业id

$job_id=join(',',$job_id);
$query="SELECT job_id FROM table WHERE job_id NOT IN('$job_id') AND user_id='$user_id'";
....do myslqi query etc
while($row=mysqli_fetch_array($result))
{
    $no_match[]=$row['job_id'];
}
我不能100%确定这是否会返回没有相关用户id的作业id。我的同事建议循环检查每个作业id,并对每个作业id执行单独的查询,但这听起来真的很糟糕


我还对寻找任何资源来快速测试mysql查询很感兴趣——链接将不胜感激:)

此查询返回的行没有您指定的作业id,但有用户id

 $query="SELECT job_id FROM table WHERE job_id NOT IN('$job_id') AND user_id='$user_id'";
如果您想要没有用户id的作业id,请使用

 $query="SELECT job_id FROM table WHERE job_id IN('$job_id') AND user_id!='$user_id'";

我认为这可以通过一个查询实现:

SELECT job_id
FROM table
WHERE user_id = '$user_id'
AND NOT EXISTS 
  (SELECT *
   FROM table
   WHERE user_id = '$user_id'
   AND job_id IN ($job_id))

如果使用的是
mysqli
,则必须使用该方法正确组合查询。您不应该使用字符串连接或插值来完成此操作。如果您想测试您的查询,您可以使用@tadman谢谢您的建议-看起来非常重要。@tadman使用参数数量可变的
bind_param
很难。这可能很棘手,但并不难,这是您必须做的事情。更困难的是从被利用的SQL注入错误中恢复。在您的示例中,您只有两个值,正确地执行这些值很简单。您只需将
添加到查询字符串中,同时将值添加到值数组中,这样事情就可以匹配了。谢谢-我想我的陈述需要考虑一下,但我认为您是正确的。