2013-05-02 2 views
4

Я пытаюсь исключить «ID» из Mysql_query, но он все еще возвращает упомянутый идентификатор. Этот идентификатор «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

Можете ли вы напечатать_r '$ _GET ['id']' и '$ notgallery'? –

+0

попробуйте повторить запрос (а не результат). Что это такое? –

+0

Массив ([0] => 21 [1] => jpg) 21.jpg – Belzelga

ответ

6

Есть пара проблем. Взгляните сюда:

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

$notgallery В настоящее время массив идентификаторов для проверки. Вы должны присоединиться к ним вместе с implode, как это:

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

Кроме того, вы завернутые gallery_id вовсе не имеет значения в кавычках. Так на самом деле вы получите что-то вроде:

"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-запросе у вас должен быть список идентификаторов, разделенных запятой, поэтому попробуйте:

$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

+3

Не было бы '$ notgallery = str_replace ('.', ',', $ Pic),' сделать смысл более понятным? –

1

имеет выше пост n лучший способ поставить его.

$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()); 
Смежные вопросы