我正在使用PDO。我希望能够使用单个查询从 3 个不同的行中获取 3 个值。我有一个表格如下。
itemID | Item_Name
____________________
125 | apple
297 | Lychee
851 | Mango
005 | Orange
1009 | Strawberry
我希望能够发送Item_Name
并按Item_Name
对表进行排序,并能够调用下一个Item_Name
和上一个Item_Name
。我该怎么做?
例如:
如果
$passedItem
Orange
我想输出Mango
,Orange
和Strawberry
.如果
$passedItem
Mango
我想输出Lychee
和Mango
并Orange
使用 on()
运算符不起作用,因为只能将一个Item_Name传递给查询。
$sql = "SELECT Item_Name FROM itemsTable WHERE Item_Name = :passedItem" ORDER BY ASC;
$stmt = $con_db->prepare($sql);
$stmt->execute(array(':passedItem'=>"Orange"));
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC);
此解决方案基于 MySQL:有条件地选择下一行和上一行。
$sql = "(SELECT Item_Name FROM itemsTable
WHERE Item_Name < ?
ORDER BY Item_Name DESC
LIMIT 1)
UNION ALL
(SELECT Item_Name FROM itemsTable
WHERE ItemName = ?)
UNION ALL
(SELECT Item_Name FROM itemsTable
WHERE ItemName > ?
ORDER BY Item_Name ASC
LIMIT 1)";
$stmt = $con_db->prepare($sql);
$stmt->execute(array("Orange", "Orange", "Orange"));
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC);
您需要传递Orange
三次才能填写所有占位符。
然后,您可以使用以下命令输出它:
foreach($rslt as $row) {
echo $row['Item_Name'] . '<br>';
}