在使用exit()时如何使用fetch_assoc while循环获取所有数据?

时间:2018-07-10 00:27:49

标签: php mysql mysqli while-loop

我似乎无法用assocexit();来回显所有数据。我查了其他类似的问题,发现了这个问题:

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()会导致这种情况,但是有没有办法用它来获取所有数据?

1 个答案:

答案 0 :(得分:1)

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

$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_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));

注意:

  1. 请记住,您对mysql注入攻击敞开大门,已解决     如果您要使用prepared statements

  2. 在第二个示例中,我没有诊断查询是否成功。不这样做是一个坏习惯。