如何在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> < 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 ></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> < 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 ></strong></a>'; //corrected your html
}
} else {
echo 'No SKU set';
//make a query to fetch first SKU and only show NEXT > for example.
}