如何在php中获取第一条和最后一条记录

如何在php中获取第一条和最后一条记录,php,mysql,Php,Mysql,我正在尝试在我的页面中创建上一个和下一个记录超链接。必须显示完整的记录。我做得很好,但是在达到第一个记录或最后一个记录后,如果上一个或最后一个链接被按下,它会给我错误。如何解决这个问题。蒂亚。我的代码是 $prevquery= "SELECT * FROM SKU_det WHERE bi_SKU < $SKU ORDER BY bi_SKU DESC LIMIT 1"; $prevresult = mysql_query($prevquery) or die(mysql_err

我正在尝试在我的页面中创建上一个和下一个记录超链接。必须显示完整的记录。我做得很好,但是在达到第一个记录或最后一个记录后,如果上一个或最后一个链接被按下,它会给我错误。如何解决这个问题。蒂亚。我的代码是

$prevquery= "SELECT * FROM SKU_det WHERE bi_SKU < $SKU ORDER BY bi_SKU DESC LIMIT 1"; 
    $prevresult = mysql_query($prevquery) or die(mysql_error());
    while($prevrow = mysql_fetch_array($prevresult))
    {
    $previd  = $prevrow['bi_SKU'];
    }


$nextquery= "SELECT * FROM SKU_det WHERE bi_SKU> $SKU ORDER BY bi_SKU ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery) or die(mysql_error());
while($nextrow = mysql_fetch_array($nextresult))
{
$nextid  = $nextrow['bi_SKU'];
}
echo $SKU;
if ($SKU==0){
    echo "<strong> < Previous</a>";
    echo "<strong> Next ></a>";
}
else if($SKU<>0){
    echo "<a href='CopyAdd.php?SKU=$previd'><strong> < Previous</a>";
    echo "<a href='CopyAdd.php?SKU=$nextid'><strong> Next ></a>";
}`
$prevquery=“选择*从SKU数据,其中bi_SKU<$SKU订单按bi_SKU描述限制1”;
$prevresult=mysql\u query($prevquery)或die(mysql\u error());
而($prevrow=mysql\u fetch\u数组($prevresult))
{
$previd=$prevrow['bi_SKU'];
}
$nextquery=“从库存单元数据中选择*,其中bi\U SKU>$SKU订单按bi\U SKU ASC限额1”;
$nextresult=mysql\u query($nextquery)或die(mysql\u error());
while($nextrow=mysql\u fetch\u数组($nextresult))
{
$nextid=$nextrow['bi_SKU'];
}
echo$SKU;
如果($SKU==0){
回显“Next>”;
}
否则,如果($SKU0){
回声“;
}`

您必须检查是否有$previd(或$nextid) 如果没有,只需隐藏上一个(或下一个)链接

$prevquery=“选择*从SKU数据,其中bi_SKU<$SKU订单按bi_SKU描述限制1”;
$prevresult=mysql\u query($prevquery)或die(mysql\u error());
而($prevrow=mysql\u fetch\u数组($prevresult))
{
$previd=null;
if(数组键存在('bi_SKU',$prevrow)&&is_int('prevrow['bi_SKU'])){
$previd=$prevrow['bi_SKU'];
}
}
$nextquery=“从库存单元数据中选择*,其中bi\U SKU>$SKU订单按bi\U SKU ASC限额1”;
$nextresult=mysql\u query($nextquery)或die(mysql\u error());
while($nextrow=mysql\u fetch\u数组($nextresult))
{
$nextid=null;
如果(数组密钥存在('bi_SKU',$nextrow)&&is_int('nextrow['bi_SKU'])){
$nextid=$nextrow['bi_SKU'];
}
}
echo$SKU;
如果($SKU==0){
回显“Next>”;
}
否则,如果($SKU0){
如果($previd!==null){
回声“;
}
}`

为了帮助您更好地编写代码,我做了一些更改,因为如果您继续使用wlalele给出的示例,Mysql注入和不推荐使用的Mysql函数很快就会出现问题

if (isset($SKU)){ //check if SKU is set before creating query.
   $prevquery= "SELECT bi_SKU FROM SKU_det WHERE bi_SKU < '" . mysql_real_escape_string($SKU). "' ORDER BY bi_SKU DESC LIMIT 1";  //escape external input
    $prevresult = mysqli_query($prevquery) or die(mysqli_error());
    if ($prevresult && mysqli_num_rows($prevquery)){ // check if there is a result
        $prevrow = mysqli_fetch_assoc($prevresult))  { // you are requesting 1 record, no need for while loop, also assoc array because you dont need array
        $previd  = $prevrow['bi_SKU'];
    }
    $nextquery= "SELECT bi_SKU FROM SKU_det WHERE bi_SKU > '" . mysql_real_escape_string($SKU). "' ORDER BY bi_SKU DESC LIMIT 1"; 
    $nextresult = mysqli_query($nextquery) or die(mysqli_error());
    if ($nextresult && mysqli_num_rows($nextresult)){ // check if there is a result
        $nextrow = mysqli_fetch_assoc($nextresult))  { // you are requesting 1 record, no need for while loop, also assoc array because you dont need array
        $nextid  = $nextrow['bi_SKU'];
    }
    echo htmlSpecialChars($SKU); //make sure to escape external input
    if (!isset($previd)){
    //only if a previd exists, show button
     echo '<a href="CopyAdd.php?SKU='.$previd.'"><strong> &lt; Previous</strong></a>'; //corrected your html
    }
    if (!isset($nextid)){
    //only if a nextid exists, show button
     echo '<a href="CopyAdd.php?SKU='.$nextid.'"><strong> Next &gt;</strong></a>'; //corrected your html
    }
} else {
    echo 'No SKU set';
    //make a query to fetch first SKU and only show NEXT > for example.
}
if(isset($SKU)){//在创建查询之前检查SKU是否已设置。
$prevquery=“从SKU det中选择bi_SKU,其中bi_SKU<”。mysql_real_escape_字符串($SKU)。“‘按bi_SKU说明限制1订购’;//转义外部输入
$prevresult=mysqli_query($prevquery)或die(mysqli_error());
if($prevresult&&mysqli_num_rows($prevquery)){//检查是否有结果
$prevrow=mysqli\u fetch\u assoc($prevresult)){//您正在请求1条记录,不需要while循环,也不需要assoc数组,因为您不需要数组
$previd=$prevrow['bi_SKU'];
}
$nextquery=“从SKU det中选择bi_SKU,其中bi_SKU>”。mysql_real_escape_字符串($SKU)。“‘按bi_SKU说明限制1订购”;
$nextresult=mysqli_query($nextquery)或die(mysqli_error());
if($nextresult&&mysqli_num_rows($nextresult)){//检查是否有结果
$nextrow=mysqli\u fetch\u assoc($nextresult)){//您正在请求1条记录,不需要while循环,也需要assoc数组,因为您不需要数组
$nextid=$nextrow['bi_SKU'];
}
echo htmlSpecialChars($SKU);//确保转义外部输入
如果(!isset($previd)){
//仅当存在previd时,显示按钮
echo“”;//已更正您的html
}
如果(!isset($nextid)){
//仅当nextid存在时,显示按钮
echo“”;//已更正您的html
}
}否则{
回显“未设置SKU”;
//例如,进行查询以获取第一个SKU并仅显示下一个>。
}

非常感谢Garytje…它正按照我想要的方式工作。不客气,请将我的答案标记为正确答案,因为路过的人不会复制错误类型的代码。。
if (isset($SKU)){ //check if SKU is set before creating query.
   $prevquery= "SELECT bi_SKU FROM SKU_det WHERE bi_SKU < '" . mysql_real_escape_string($SKU). "' ORDER BY bi_SKU DESC LIMIT 1";  //escape external input
    $prevresult = mysqli_query($prevquery) or die(mysqli_error());
    if ($prevresult && mysqli_num_rows($prevquery)){ // check if there is a result
        $prevrow = mysqli_fetch_assoc($prevresult))  { // you are requesting 1 record, no need for while loop, also assoc array because you dont need array
        $previd  = $prevrow['bi_SKU'];
    }
    $nextquery= "SELECT bi_SKU FROM SKU_det WHERE bi_SKU > '" . mysql_real_escape_string($SKU). "' ORDER BY bi_SKU DESC LIMIT 1"; 
    $nextresult = mysqli_query($nextquery) or die(mysqli_error());
    if ($nextresult && mysqli_num_rows($nextresult)){ // check if there is a result
        $nextrow = mysqli_fetch_assoc($nextresult))  { // you are requesting 1 record, no need for while loop, also assoc array because you dont need array
        $nextid  = $nextrow['bi_SKU'];
    }
    echo htmlSpecialChars($SKU); //make sure to escape external input
    if (!isset($previd)){
    //only if a previd exists, show button
     echo '<a href="CopyAdd.php?SKU='.$previd.'"><strong> &lt; Previous</strong></a>'; //corrected your html
    }
    if (!isset($nextid)){
    //only if a nextid exists, show button
     echo '<a href="CopyAdd.php?SKU='.$nextid.'"><strong> Next &gt;</strong></a>'; //corrected your html
    }
} else {
    echo 'No SKU set';
    //make a query to fetch first SKU and only show NEXT > for example.
}