PHP MySQLi:未初始化的字符串偏移量
我试图使用foreach结果显示一些评论,但似乎不起作用,必须打印ID,并且在数据库中找到的每个评论的文本都包含评论IDPHP MySQLi:未初始化的字符串偏移量,php,mysqli,foreach,Php,Mysqli,Foreach,我试图使用foreach结果显示一些评论,但似乎不起作用,必须打印ID,并且在数据库中找到的每个评论的文本都包含评论ID $revnr = $_GET['id']; $result_rev = $mysqli -> query("SELECT * FROM `reviews` WHERE `ID_prod` = " .$revnr. " LIMIT 0 , 30"); $row_revs = mysqli_fetch_all($result_rev); if ($row_rev
$revnr = $_GET['id'];
$result_rev = $mysqli -> query("SELECT * FROM `reviews` WHERE `ID_prod` = " .$revnr. " LIMIT 0 , 30");
$row_revs = mysqli_fetch_all($result_rev);
if ($row_revs == NULL) {
print '<p class="text-center">No Reviews!</p>';
} else {
foreach($row_revs as $row_rev){
$id_r = $row_rev['2'];
$id_c = $qls -> user_info[$id_r];
$ID_review = $row_rev['0'];
$ID_prod = $row_rev['1'];
$ID_user = $id_c;
$review = $row_rev['3'];
$stars = $row_rev['4'];
[...]
}
}
mysqli_free_result($result_rev);
?>
使用mysqli_fetch_all,我可以全部获取并放入数组。您使用的将在关联数组中返回结果。因此,您可以使用字段名作为键来读取结果。例如,如果您的表具有字段id,则可以使用$row_rev['id'];访问它
如果您想使用您可以使用的索引-还请注意,在获取结果时不需要引用数字,例如
$id_r = $row_rev[2];
请参见此处,mysqli\u fetch\u assoc$result\u rev;。您正在以关联数组的形式获取行,而不是以数字数组的形式获取行。您好@RajdeepPaul感谢您的回复,我已尝试将其更改为mysqli_fetch_数组,但没有任何更改。请将引号移到0、1等附近。它应该是$row_rev[0],$row_rev[1]…像这样。把所有错误输出放在这里。注意:第105行调用堆栈上的/home/ubuntu/workspace/views/product.php中的未初始化字符串偏移量:2:0.0015 237176 1。{main}/home/ubuntu/workspace/index.php:0.1947 361208 2。包括“/home/ubuntu/workspace/core/switch.php”/home/ubuntu/workspace/index.php:14 0.1954 364592 3。包括“/home/ubuntu/workspace/views/product.php”/home/ubuntu/workspace/core/switch.php:5等…我试图更改并删除引号,但没有任何更改,我认为问题在于查询,但使用var_dump我得到了这个类mysqli_result14 5{public$current_field=>int0 public$field_count=>int5 public$length=>array5{[0]=>int1[1]=>int2[2]=>int1[3]=>int66[4]=>int1}public$num_rows=>int2 public$type=>int0}您在问题中的while循环现在看起来更接近于一个有效的解决方案。也许可以添加mysqli_num_字段$result_rev;,以验证如果您没有看到所有的行,查询将返回多少行。我将它与var_dump一起使用,结果为int5,使用foreach$row_revs作为$row_rev,它将返回10行而不是2行