我似乎无法用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()
会导致这种情况,但是有没有办法用它来获取所有数据?
答案 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));
请记住,您对mysql注入攻击敞开大门,已解决 如果您要使用prepared statements。
在第二个示例中,我没有诊断查询是否成功。不这样做是一个坏习惯。