2015-06-26 2 views
8

У меня есть этот запрос PDO для вызова данных из MySQL.Получить следующую и предыдущую записи в рамках одного запроса

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

Призывая к этой конкретной ITEMNAME, можно получить следующие и предыдущие itemNames, используя его Itemid внутри самого этого же запроса без необходимости писать новый запрос, чтобы получить следующий и предыдущий itemNames?

например. если

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); 

Я, глядя в сторону получения Teak Round Table и Mahogani Black Chair и Thulang Relaxing Chair

+0

, где itemID в (id1, id2, id3) .... – user1844933

+0

@ user1844933 спасибо. Вы можете объяснить это немного больше? – Becky

+0

$ sql = "SELECT itemName FROM furniture WHERE itemID не в (554)"; Если вам это нравится, отобразите все идентификаторы, кроме 554 – Ramki

ответ

2

Пожалуйста, используйте этот код:

(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) 

Для примера кода:

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

Для повторения результатов вы также можете использовать PDO fetch() function для получения каждой строки.

+0

спасибо. Выглядит неплохо. Как получить эхо для этого? – Becky

+0

Я не понимаю ваш вопрос. Вы можете выполнить тот же код, который вы продемонстрировали выше, просто изменив переменную запроса $ sql с этим. – Dimos

+0

Я сделал это. Я hgavving проблемы присваивания возвращаемых значений в 2 переменных в цикле 'foreach()'? – Becky

Смежные вопросы