2012-02-27 25 views
-2

我想除了已經取的值來從數據庫中的一些價值觀,不能在SELECT查詢不能

下面是該查詢,我要取的值是哪裏都不在第一次提取,

$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>"; 
} 
+1

「不工作」是不是很描述。你期望得到什麼?你得到了什麼?任何錯誤/警告(如果是這樣,他們說什麼)? – Piskvor 2012-02-27 06:49:51

+0

這不是正確的做法。要麼使用分頁(搜索),要麼反過來查詢選擇條件(並且要注意NULL),具體取決於你在做什麼。 – Mat 2012-02-27 06:51:57

+0

另外,'$ rslt'實際上並不是結果,它是*資源*。你只使用'mysql_fetch_assoc'得到一個結果(作爲一個關聯數組)。你是否想要做一些類似'...的地方值不在(10)'? – Piskvor 2012-02-27 06:52:41

回答

3

爲什麼不否定第一個查詢來獲得第二個查詢?

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)或子查詢和您的s評論不會導致其中任何一個。

0

您正在使用$的rslt,而不是在你的語句中的$ ARR ...記住你應該先轉換成$arr使用implode

0

MySQL的一個逗號分隔的列表IN函數需要一個文字逗號分隔的值或一個子查詢。你正在放入一個關聯數組中。試試這個:

$qry="select value,name,number from test where value NOT IN (select value,name,number from test where value=10)"; 
0

瓦爾保存到一個變量,並嘗試下面的代碼

$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>"; 
}