Php 传递一个值,然后依次调用上一个、当前和下一个值
我在用PDO。我希望能够使用单个查询从3个不同的行中获取3个值。我有一张如下的桌子Php 传递一个值,然后依次调用上一个、当前和下一个值,php,mysql,Php,Mysql,我在用PDO。我希望能够使用单个查询从3个不同的行中获取3个值。我有一张如下的桌子 itemID | Item_Name ____________________ 125 | apple 297 | Lychee 851 | Mango 005 | Orange 1009 | Strawberry 我希望能够发送一个Item\u Name并按Item\u Name对表进行排序,并且能够调用下一个Item\u Name和
itemID | Item_Name
____________________
125 | apple
297 | Lychee
851 | Mango
005 | Orange
1009 | Strawberry
我希望能够发送一个Item\u Name
并按Item\u Name
对表进行排序,并且能够调用下一个Item\u Name
和上一个Item\u Name
。我该怎么做
e、 g:
$passedItem
是橙色
我想输出芒果
和橙色
和草莓
$passedItem
是Mango
我想输出Lychee
和Mango
和Orange
on()
运算符无效,因为只能将一个项目名称传递给查询
$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);
此解决方案基于
@Barmar我在谷歌上搜索了几个小时,但我没有发现。也许只是获取所有项目,获取直到找到项目,然后显示索引-1和索引+1。。。这是一个很难回答的问题,因为您的表ID在您的情况下是无用的。。。如果您的表很大,那么“整个抓取”解决方案将不会非常有效…@Barmar next+previous在id排序行的情况下,我同意您的看法。但是他的非有序id的具体情况是不同的…@Julo0sS订购什么并不重要,技术是一样的。他说他想
按商品名称@Julo0sS订购-你完全正确
$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);
foreach($rslt as $row) {
echo $row['Item_Name'] . '<br>';
}