我想从数据库中提取一些值,除了已经提取的值,
这是一个查询,我想提取第一次提取中没有的值,
$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>";
}
为什么不否定第一个查询以获得第二个查询?
select value,name,number from test where value = 10
然后:
select value,name,number from test where value != 10 or value is null
如果列中没有空值,则可以取消空检查
顺便说一句:错误在这里:
NOT IN ('$rslt')
NOT IN
需要逗号分隔的值列表,如NOT IN (1, 5, 6)
或子查询,而您的语句不会产生任何值列表。
$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)";
您在in语句中使用$rslt而不是$arr。。。请记住,您应该首先使用implode
将$arr
转换为逗号分隔的列表
MySQL的IN
函数需要一个逗号分隔的文本值或子查询。您正在放入关联数组中。试试这个:
$qry="select value,name,number from test where value NOT IN (select value,name,number from test where value=10)";
将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>";
}