如何在使用exit()时使用fetch\u assoc while loop获取所有数据?

628mspwn  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(249)

我似乎不能用我的全部数据来回应 assoc 以及 exit(); . 我查了其他类似的问题发现:

if(isset($_POST['postuserid'])){
        $uid = $_POST['postuserid'];

        $ssql = "SELECT * FROM foodid WHERE postid=$uid";
        $rresult = mysqli_query($db,$ssql);
        while ($lrow = mysqli_fetch_assoc($rresult)){
             if($lrow !== FALSE) {
            echo $lrow['userid'];
            exit();
             }
        }
        }
        }

没有成功。我也试过 exit() 在每个括号外,我仍然得到相同的结果。我一次只获取一个数据。我知道使用 exit() 导致这种情况,但是有没有一种方法可以用它获取所有数据?

cmssoen2

cmssoen21#

有多种解决方案,我将展示更常用的方法:

$ssql = "SELECT * FROM foodid WHERE postid=$uid"; 
$rresult = mysqli_query($db,$ssql); 
if($rresult){
  $data = mysqli_fetch_all($rresult, MYSQLI_ASSOC);
  die(json_encode(mysqli_fetch_all($rresult, MYSQLI_ASSOC)));
} else {
  header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
  // Do your error logging.
  die();
}

或者不使用fetch\u all,以防您要更改某些数据:

$ssql = "SELECT * FROM foodid WHERE postid=$uid"; 
$rresult = mysqli_query($db,$ssql); 
while ($lrow = mysqli_fetch_assoc($rresult)){ 
  $ret[] = $lrow; 
} 

die(json_encode($ret));

注:

请记住,您对mysql注入攻击非常开放,如果您使用prepared语句,就可以解决这些攻击。
在第二个示例中,我没有诊断查询是否成功。不这样做是不好的做法。

相关问题