Php mysqli使用id设置下一个和上一个按钮

Php mysqli使用id设置下一个和上一个按钮,php,mysqli,Php,Mysqli,我想做一个“上一步”和“下一步”按钮,使用ID在数据库中滚动。这是我在使用mysql时的代码。现在它改成了mysqli,所以我不知道这段代码是否仍然有效,因为我一直在得到null function getNavID($id) { $result4= mysqli_query("SELECT ( SELECT id FROM products_list WHERE id > '$id' LIMIT 1 ) AS nextValue, ( SELECT id

我想做一个“上一步”和“下一步”按钮,使用ID在数据库中滚动。这是我在使用mysql时的代码。现在它改成了mysqli,所以我不知道这段代码是否仍然有效,因为我一直在得到null

function getNavID($id) {

$result4= mysqli_query("SELECT 
    ( SELECT id FROM products_list
        WHERE id > '$id' LIMIT 1 ) AS nextValue,
    ( SELECT id FROM products_list
        WHERE id < '$id' ORDER BY id DESC LIMIT 1 ) AS prevValue
    FROM products_list
    LIMIT 1");
if ($resultID = mysqli_fetch_array($result4)) {
    return $resultID;
}
else {
    return NULL;
}
}

$LinkID = getNavID($id);

if (!is_null($LinkID['prevValue']))
{
?>
<a href="update.php?id=<?php echo urlencode($LinkID['prevValue']); ?>" target="_top">Previous</a>
<?php
}
else if (!is_null($LinkID['nextValue']))
{
?>
    <a href="update.php?id=<?php echo urlencode($LinkID['nextValue']); ?>" target="_top">Next</a>
<?php
}
else
{
    echo "No Entries";
}
除了将mysql\u查询更改为mysqli\u查询之外,还有什么需要更改的吗?提前感谢您的帮助

试试这个:

global $pdo;

$id = $the_selected_id;

$stmt_a = $pdo->prepare("
(SELECT * FROM images WHERE id < ? ORDER BY id DESC LIMIT 1)
 UNION (SELECT * FROM images WHERE id = (SELECT MAX(id) FROM images)) LIMIT 1");
$stmt_b = $pdo->prepare("
(SELECT * FROM images WHERE id > ? ORDER BY id ASC LIMIT 1)
 UNION (SELECT * FROM images WHERE id = (SELECT MIN(id) FROM images)) LIMIT 1");

// $vars = array(':id' => $id);
$prev = $stmt_a->execute(array( (int)$id ));
$next = $stmt_b->execute(array( (int)$id ));

if ($stmt_a->rowCount() > 0) {
    while($row = $stmt_a->fetch(PDO::FETCH_ASSOC)) {
        echo '<a href="' . $row['prev_id'] . '">Previous</a>';
    } 
 } else {
    echo 'no previous';
}

if ($stmt_b->rowCount() > 0) {
   while($row = $stmt_b->fetch(PDO::FETCH_ASSOC)) {
      echo '<a href="' . $row['next_id'] . '">Next</a>';
  }
} else {
echo 'no next';

在sentax之前输入数据库连接,如下所示:

<?

//enter your MySQL database host name, often it is not necessary to edit this line
$db_host = "localhost";

//enter your MySQL database username
$db_username = "your user name";

//enter your MySQL database password
$db_password = "your passwor";


//enter your MySQL database name
$db_name = "your db name";

//URL to the the site
$ScriptPath = "http://www.your-site.com/";


$db = mysqli_connect($db_host, $db_username, $db_password) or die("Error " . mysqli_error($db));

mysqli_select_db($db, $db_name) or die("Error " . mysqli_error($db));


function getNavID($id) {

$result4= mysqli_query($db, "SELECT 
    ( SELECT id FROM products_list
        WHERE id > '$id' LIMIT 1 ) AS nextValue,
    ( SELECT id FROM products_list
        WHERE id < '$id' ORDER BY id DESC LIMIT 1 ) AS prevValue
    FROM products_list
    LIMIT 1");
if ($resultID = mysqli_fetch_array($db, $result4)) {
    return $resultID;
}
else {
    return NULL;
}
}

$LinkID = getNavID($id);

if (!is_null($LinkID['prevValue']))
{
?>
<a href="update.php?id=<?php echo urlencode($LinkID['prevValue']); ?>" target="_top">Previous</a>
<?php
}
else if (!is_null($LinkID['nextValue']))
{
?>
    <a href="update.php?id=<?php echo urlencode($LinkID['nextValue']); ?>" target="_top">Next</a>
<?php
}
else
{
    echo "No Entries";
}
?>

我不知道这段代码是否仍然有效。所以,去测试一下我已经测试过的itI,我说我一直在变为空,这就是为什么我在测试后在这里发布它。所以,你想让我们在你的代码中找到一个错误。不幸的是,这类问题在这里是离题的,我只是想知道为什么我总是得到空的结果。因为这段代码仍然有效,我从来没有改变过任何东西,只对mysqli做过修改。说真的,有时候我真的不知道这个地方是干什么用的。我不是一个当我遇到问题时会马上发帖的人,我会花至少一天的时间尽我最大的努力把它弄明白,除了在这里发帖之外别无选择。失望的是,我得到的只是这些无用的评论,而不是一些有意义的帮助。如果您不想帮忙,请不要评论,这将是非常感谢的。所以这次我不得不分成两个问题?不再将2合并为1?如果使用PDO,则可以使用:PDO::CURSOR_SCROLL,尝试查找有关此的文档。