繁体   English   中英

从mysqli选择查询中获取带有限制的查询结果,同时返回无限循环如何防止这种情况?

[英]fetching a result from mysqli select query with limit via while returns infinite loop how to prevent this?

以某种方式使用while()遍历mysqli->fetch()返回无限循环

我已经在查询中设置了LIMIT 4 我编写的代码顺序可能有问题

  <?php
  $user = $_SESSION['username'];

  $stmt=$con->prepare("SELECT id_msg,dari,subject,tgl 
  FROM inbox
  WHERE username=?
  ORDER BY id_msg DESC LIMIT 4");
  if($stmt===false){
     die("Error prepare ".htmlspecialchars($mysqli->error));
  }
  $bp=$stmt->bind_param("s",$user);
  if($bp===false){
     die("Error Binding param ".htmlspecialchars($mysqli->error));
  }
  $bp=$stmt->execute();
  if($bp===false){
      die("Error Execute ".htmlspecialchars($mysqli->error));
  }
  $bp=$stmt->bind_result($id,$dari,$subject,$tgl);
  if($bp===false){
      die("Error Bind result ".htmlspecialchars($mysqli->error));
  }
  $ambil=$stmt->fetch();

   while($ambil){
       echo $dari;
   } 
 ?>

当前,收件箱表中只有1行,因此应该只返回1个结果。

我编辑了您的代码。 看剧本的结尾

<?php
 $user = $_SESSION['username'];

 $stmt=$con->prepare("SELECT id_msg,dari,subject,tgl 
 FROM inbox
 WHERE username=?
 ORDER BY id_msg DESC LIMIT 4");
 if($stmt===false){
    die("Error prepare ".htmlspecialchars($mysqli->error));
 }
 $bp=$stmt->bind_param("s",$user);
 if($bp===false){
     die("Error Binding param ".htmlspecialchars($mysqli->error));
 }
 $bp=$stmt->execute();
 if($bp===false){
     die("Error Execute ".htmlspecialchars($mysqli->error));
 }
 $bp=$stmt->bind_result($id,$dari,$subject,$tgl);
 if($bp===false){
     die("Error Bind result ".htmlspecialchars($mysqli->error));
 }
 $ambil=$stmt->fetch();

  while($ambil){
      echo $dari;

  // We need to get next result, else we will have infinite loop here
     $ambil=$stmt->fetch();
  // -----------------------------

  } 
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM