2013-05-02 63 views
4

我想從Mysql_query中排除'ID',但它仍然返回提到的ID。 此ID爲'21',但查詢返回'21',這不是我想要的。 我在Mysql中拼錯了什麼?PHP:Mysql(「SELECT WHERE ID NOT」)

("SELECT * FROM `gallery` WHERE `gallery_id` NOT IN ('$notgallery')") or die (mysql_error()); 


function not_gallery($pic){ 

$pic = $_GET['id']; 
$id = explode(".", $pic); 
$notgallery = $id; 

$notg = mysql_query("SELECT * FROM `gallery` WHERE `gallery_id` NOT IN ('$notgallery')") or die (mysql_error()); 
while($not_row = mysql_fetch_assoc($notg)){ 
    $notgimage[] = array(
     'id' => $not_row['gallery_id'], 
     'user' => $not_row['user_id'], 
     'name' => $not_row['name'], 
     'timestamp' => $not_row['timestamp'], 
     'ext' => $not_row['ext'], 
     'caption' => $not_row['caption'], 

    ); 
} 
print_r($notgimage); 
} 

我print_r'ed查詢和它仍然返回 '21',這我已經排除/或我想我做到

Array ([0] => Array ([id] => 21 [user] => 18 [name] => NotDeojeff [timestamp] => 1367219713 [ext] => jpg [caption] => asd) [1] => Array ([id] => 22 [user] => 18 [name] => NotDeojeff [timestamp] => 1367225648 [ext] => jpg [caption] => Ogre magi) 
+0

你可以print_r'$ _GET ['id']'和'$ notgallery'嗎? – 2013-05-02 14:52:18

+0

嘗試回顯查詢(不是結果)。它的內容是什麼? – 2013-05-02 14:52:58

+0

Array([0] => 21 [1] => jpg)21.jpg – Belzelga 2013-05-02 14:53:35

回答

6

有幾個問題。看看這裏:

"SELECT * FROM `gallery` WHERE `gallery_id` NOT IN ('$notgallery')" 

$notgallery是當前要檢查的ID數組。您需要implode加入他們重新走到一起,就像這樣:

$notgallery = implode(', ', $id); 

而且,你已經包裹gallery_id的NOT IN引號值。所以實際上你會得到這樣的東西:

"SELECT * FROM `gallery` WHERE `gallery_id` NOT IN ('21, 13')" 

這就像是說WHERE gallery_id != '21, 13'。假定您使用INT s作爲id列,則需要刪除圍繞$notgallery的單引號。如果您使用的是字符串,你可以改變你的破滅:

$notgallery = implode("', '", $id); 
3

$ notgallery是一個數組,在你的SQL查詢中,你必須有一個由逗號分隔的id列表,所以試試:

$pic = $_GET['id']; 
$id = explode(".", $pic); 
$notgallery = $id; 
$notgallery = implode(",", $notgallery); 
$notg = mysql_query("SELECT * FROM `gallery` WHERE `gallery_id` NOT IN ($notgallery)") or die (mysql_error()); 
+0

哇!謝謝。它的工作原理 – Belzelga 2013-05-02 14:57:33

+3

不會'$ notgallery = str_replace('。',',',$ pic);'更有意義嗎? – 2013-05-02 15:03:10

1

具有上述(POST)更好的方式把它。

$pic = $_GET['id']; 
$id = explode(".", $pic); 
$notgallery = $id; 
$notgallery = implode(",", $notgallery); 
$notg = mysql_query("SELECT * FROM `gallery` WHERE `gallery_id` NOT IN ($notgallery)") or die (mysql_error()); 
相關問題