【发布时间】:2015-10-14 18:55:24
【问题描述】:
我有一个名为block 的表,其结构如下(这里的条目是有限的,尽管原始数据会有很多条目)
id blockeduser blockedby
1 1 3
2 4 3
另一个表interest 看起来像这样(这里的条目是有限的,虽然原始数据会有很多条目)
id userid interest
1 1 I5
2 2 I5
3 3 I5
4 4 I5
5 5 I5
我要做的是获取已阻止和被阻止的用户的 ID,在上面的示例数据库 ID 中,我拥有的是 1,4 和 3。获取此数据后,我想获取 ID在这种情况下有共同兴趣的用户中,它是 I5,但关键是这些 id 的第二个列表不应包含在第一部分中获取的那些 id(即 1、4、3)。
因此,我应该得到以下 id 2,5
对于整个过程,我使用了以下代码:
$interest = $_REQUEST['interest'];
$myuserid = $_REQUEST['myuserid'];
$sql = "SELECT * FROM block where blockedby='".$myuserid."'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
$blockeduser=$row["blockeduser"];
$block[] = array($blockeduser);
}
/*echo "<pre>";
print_r ($block);
echo "</pre>"; */
foreach($block as $key=>$val)
{
$id = $val["0"];
$sql1 = "SELECT * FROM interest where interest='".$interest."' and userid!='".$id."' and userid!='".$myuserid."'";
echo $sql1;
}
}
我从print_r ($block) 得到的数组是这样的
Array
(
[0] => Array
(
[0] => 1
)
[1] => Array
(
[0] => 4
)
)
当我echo $sql1 我得到这样的结果
SELECT * FROM interest where interest='I5' and userid!='1' and userid!='3'
SELECT * FROM interest where interest='I5' and userid!='4' and userid!='3'
但要达到最终结果,它应该是这样的(我无法得到)
SELECT * FROM interest where interest='I5' and userid!='1' and userid!='3' and userid!='4'
上面的查询应该只运行一次,这样id就不会重复
谁能告诉我如何实现这个结果
【问题讨论】:
标签: php mysql sql arrays mysqli