2015-06-26 12 views
8

Sto avendo questa query PDO per chiamare i dati da un MySQL.Ottenere i record precedenti e precedenti all'interno della stessa query

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

Durante la chiamata per questa particolare itemName, è possibile ottenere i itemNames successivo e precedente utilizzando la sua itemID all'interno di questa stessa query stessa, senza dover scrivere una nuova query per ottenere i itemNames precedente e successivo?

ad es. se

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

Sto cercando di ottenere via Teak Round Table e Mahogani Black Chair e Thulang Relaxing Chair

+0

dove itemID in (id1, id2, id3) .... – user1844933

+0

@ user1844933 grazie. Puoi spiegarlo un po 'di più? – Becky

+0

$ sql = "SELECT itemName FROM furniture WHERE itemID not in (554)"; se ti piace questo mans visualizza tutti gli id ​​tranne il 554 – Ramki

risposta

2

Per favore usate questo codice:

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

Per il codice di esempio:

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

Per iterare i risultati, è anche possibile utilizzare PDO fetch() function per ottenere ogni riga.

+0

grazie. Sembra buono. Come ottengo l'eco per questo? – Becky

+0

Non capisco la tua domanda. Puoi eseguire lo stesso codice che hai dimostrato sopra, semplicemente cambiando la variabile di query $ sql con questa. – Dimos

+0

L'ho fatto. Sto risolvendo i problemi assegnando i valori restituiti a 2 variabili all'interno del ciclo 'foreach()'? – Becky

Problemi correlati