2015-06-26 11 views
8

Mam to zapytanie PDO, aby wywołać dane z MySQL.Otrzymuj kolejne i poprzednie rekordy w ramach tego samego zapytania.

$sql = "SELECT itemName FROM furniture WHERE itemID = :item"; 

Podczas rozmowy na tym konkretnym ItemName, czy to możliwe, aby uzyskać następne i poprzednie itemNames przy użyciu jego ItemID w tym samym samego zapytania bez konieczności pisania nowego zapytania, aby uzyskać następne i poprzednie itemNames?

np. jeśli

itemID | itemName 
___________________________ 
553  | Mahogani Black Chair 
554  | Teak Round Table 
555  | Thulang Relaxing Chair 
556  | Teak Relaxing Chair 

$sql = "SELECT itemName FROM furniture WHERE itemID = :item"; 
$stmt = $connect->prepare($sql); 
$stmt->execute(array(':item'=>"554")); 
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC); 

szukam dala od coraz Teak Round Table i Mahogani Black Chair i Thulang Relaxing Chair

+0

gdzie itemID w (id1, id2, id3) .... – user1844933

+0

@ user1844933 thanks. Czy możesz wyjaśnić to nieco więcej? – Becky

+0

$ sql = "WYBIERZ itemName FROM mebli GDZIE itemID nie znajduje się w (554)"; jeśli podoba ci się ten mans wyświetlają wszystkie identyfikatory inne niż 554 – Ramki

Odpowiedz

2

Proszę użyć tego kodu:

(SELECT itemName FROM furniture WHERE itemID < 554 order by itemID desc limit 1) 
UNION 
(SELECT itemName FROM furniture WHERE itemID >= 554 order by itemID asc limit 2) 

na przykład kodu:

MyTable: 
================ 
id Store_name 
================ 
1 English 
2 French 
3 Tamil 
4 Uk 
5 US 

<?php 
$con = mysqli_connect("localhost","root","ramki","ramki"); 
$sql = "(SELECT store_name FROM store WHERE id < 2 order by id desc limit 1) 
     UNION 
     (SELECT store_name FROM store WHERE id >= 2 order by id asc limit 2)"; 
$query = mysqli_query($con,$sql); 
while ($row = mysqli_fetch_assoc($query)) { 
echo $row['store_name']; 
echo "<br>"; 
} 
?> 
1
$sql = "SELECT itemName FROM furniture WHERE itemID IN (:item-1, :item, :item+1) ORDER BY itemID"; 

Aby powtórzyć wyniki, można również użyć numeru PDO fetch() function, aby uzyskać każdy wiersz.

+0

dzięki. Wygląda dobrze. Jak uzyskać echo dla tego? – Becky

+0

Nie rozumiem twojego pytania. Możesz wykonać ten sam kod, który pokazałeś powyżej, zmieniając po prostu zmienną kwerendy $ sql. – Dimos

+0

Zrobiłem to. Zajmuję się problemami przypisującymi zwrócone wartości do 2 zmiennych w pętli 'foreach()'? – Becky

Powiązane problemy