我想从数据库中获取一些值,除了已经获取的值,
这是查询,我想获取不在第一次获取的值,
$qry="select value,name,number from test where value=10";
$rslt=mysql_query($qry);
$arr=mysql_fetch_assoc($rslt);
$qry2="select value,name,number from test where value NOT IN ('$rslt')";
$rslt2=mysql_query($qry2);
while($arr2=mysql_fetch_assoc($rslt2))
{
echo "<pre>";
print_r($arr2);
echo "<pre>";
}
答案 0 :(得分:3)
为什么不否定第一个查询以获得第二个查询?
select value,name,number from test where value = 10
然后:
select value,name,number from test where value != 10 or value is null
如果列
中没有空值,则可以省略空检查Btw:错误在这里:
NOT IN ('$rslt')
NOT IN
需要逗号分隔的值列表,例如NOT IN (1, 5, 6)
或子查询,并且您的语句不会导致其中任何一个。
答案 1 :(得分:0)
$rslt
是resource
类型的变量:http://www.php.net/manual/en/function.mysql-query.php
你不能把它放到mysql语句中并期望它能够正常工作。您可以将其更改为$qry
:
$qry2="select value,name,number from test where value NOT IN ($qry)";
答案 2 :(得分:0)
您在IN语句中使用$ rslt而不是$ arr ...并且记住您应该首先使用$arr
将implode
转换为以逗号分隔的列表
答案 3 :(得分:0)
MySQL的IN
函数需要一个以逗号分隔的文字值或子查询。你正在放入一个关联数组。试试这个:
$qry="select value,name,number from test where value NOT IN (select value,name,number from test where value=10)";
答案 4 :(得分:0)
将val保存到变量并尝试下面的代码
$val=10;
$qry="select value,name,number from test where value=$val";
$rslt=mysql_query($qry);
$arr=mysql_fetch_assoc($rslt);
$qry2="select value,name,number from test where value NOT IN ($val)";
$rslt2=mysql_query($qry2);
while($arr2=mysql_fetch_assoc($rslt2))
{
echo "<pre>";
print_r($arr2);
echo "<pre>";
}