Php MySQL只返回符合条件的结果

Php MySQL只返回符合条件的结果,php,mysql,Php,Mysql,我试图在数据库中只选择符合确切条件的项,在这种情况下,我需要该项同时处于活动状态和打开状态。然后,这将填充旋转木马,箭头将按ID导航到项目 /* mySql code */ if ($select = $db -> prepare("SELECT id, name, type, active, abv, ibu, og, hops, color, description, growlers, tap, cans, bottles, image FROM beers WHERE tap =

我试图在数据库中只选择符合确切条件的项,在这种情况下,我需要该项同时处于活动状态和打开状态。然后,这将填充旋转木马,箭头将按ID导航到项目

/* mySql  code */
if ($select = $db -> prepare("SELECT id, name, type, active, abv, ibu, og, hops, color, description, growlers, tap, cans, bottles, image FROM beers WHERE tap = 'Yes' AND (active = 'Yes') AND (id = ?)"))
{
    $select -> bind_param('s', $_GET['id']);
    $select -> execute();
    $select -> bind_result($id, $name, $type, $active, $abv, $ibu, $og, $hops, $color, $description, $growlers, $tap, $cans, $bottles, $image);
    $select -> fetch();
    $select -> close();
}

/* carousel  code */
<a id="prev" class="controls" href="./?page=tapbeer&id=<?php echo $_GET['id'] - 1; ?>">
 <i class="fal fa-angle-left"></i>
</a>
<a id="next" class="controls" href="./?page=tapbeer&id=<?php echo $_GET['id'] + 1; ?>">
  <i class="fal fa-angle-right"></i>
</a>
我只希望啤酒1和啤酒4显示在旋转木马中


我一直遇到的问题是,所有ID都会滚动浏览,并在旋转木马中显示为空,因为它们不符合条件,因为我们查看ID,然后添加或减去1以按顺序获取下一个ID。

获取下一个和上一个值的查询是:

SELECT id
FROM beers 
WHERE tap = 'Yes' AND active = 'Yes' AND id > ?
ORDER BY id ASC
LIMIT 1

SELECT id
FROM beers 
WHERE tap = 'Yes' AND active = 'Yes' AND id < ?
ORDER BY id DESC
LIMIT 1

在MySQL 8.x中更容易实现。你用的是MySQL 5.x还是8.x?对不起,你把我弄丢了。我知道你有什么,但这一切是如何与我的原始代码一起进行的?在你的代码中执行这个查询,每个查询都会给你下一个或上一个记录的id。然后在你的链接中使用它们。我知道我要求很多,但是你能按照你看到的把它们放在一起吗?当我在代码中执行此操作时,ID返回的顺序仍然与它们是否符合标准有关。请参见更新,
query_1
query_2
是我的答案中的查询。谢谢,但这产生了一个致命错误“致命错误:调用布尔值上的成员函数bind_param()”更新:我修复了致命错误,直接在“query_1”、“query_2”语句中使用查询,现在返回上一个和下一个的空白结果
SELECT id
FROM beers 
WHERE tap = 'Yes' AND active = 'Yes' AND id > ?
ORDER BY id ASC
LIMIT 1

SELECT id
FROM beers 
WHERE tap = 'Yes' AND active = 'Yes' AND id < ?
ORDER BY id DESC
LIMIT 1
if ($select = $db -> prepare("SELECT id, name, type, active, abv, ibu, og, hops, color, description, growlers, tap, cans, bottles, image FROM beers WHERE tap = 'Yes' AND (active = 'Yes') AND (id = ?)"))
{
    $select -> bind_param('s', $_GET['id']);
    $select -> execute();
    $select -> bind_result($id, $name, $type, $active, $abv, $ibu, $og, $hops, $color, $description, $growlers, $tap, $cans, $bottles, $image);
    $select -> fetch();
    $select -> close();


    $nextId = $db->prepare('query_1');
    $nextId -> bind_param('s', $_GET['id']);
    $nextId -> execute();
    $nextId -> bind_result($next_id);
    $nextId -> fetch();
    $nextId -> close();

    $prevId = $db->prepare('query_2');
    $prevId -> bind_param('s', $_GET['id']);
    $prevId -> execute();
    $prevId -> bind_result($prev_id);
    $prevId -> fetch();
    $prevId -> close();
}

/* carousel  code */
<a id="prev" class="controls" href="./?page=tapbeer&id=<?php echo $prev_id; ?>">
 <i class="fal fa-angle-left"></i>
</a>
<a id="next" class="controls" href="./?page=tapbeer&id=<?php echo $next_id; ?>">
  <i class="fal fa-angle-right"></i>
</a>