PHP MySQLi:未初始化的字符串偏移量

PHP 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

我试图使用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_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行