【问题标题】:PHP MySQLi : Uninitializaed String offsetPHP MySQLi:未初始化的字符串偏移量
【发布时间】:2016-02-02 03:44:43
【问题描述】:

我正在尝试使用 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 我可以获取所有数据并放入数组中。

【问题讨论】:

  • 见这里,mysqli_fetch_assoc($result_rev);。您将行作为关联数组而不是数字数组获取。
  • 嗨@RajdeepPaul 感谢您的回复,我已尝试将其更改为mysqli_fetch_array,但没有任何改变
  • 去掉01等周围的引号。应该是$row_rev[0]$row_rev[1]...这样。
  • 把所有的错误输出放在这里。
  • 注意:未初始化的字符串偏移量:2 在 /home/ubuntu/workspace/views/product.php 第 105 行调用堆栈:0.0015 237176 1. {main}() /home/ubuntu/workspace/ index.php:0 0.1947 361208 2.include('/home/ubuntu/workspace/core/switch.php') /home/ubuntu/workspace/index.php:14 0.1954 364592 3.include('/home/ubuntu/工作区/views/product.php') /home/ubuntu/workspace/core/switch.php:5 等...

标签: php mysqli foreach


【解决方案1】:

您正在使用mysqli_fetch_assoc,它将以关联数组的形式返回您的结果。因此,您将使用字段名作为键来读取结果。例如,如果您的表有字段id,您可以使用$row_rev['id']; 访问它。

如果您想使用索引,您可以使用mysqli_fetch_array - 另请注意,在获取结果时您不需要引用数字,例如

$id_r = $row_rev[2]; 

【讨论】:

  • 我试图改变并切断引号,但没有任何改变,我认为问题是查询但使用 var_dump 我得到了这个(class mysqli_result#14 (5) { public $current_field => int(0) public $field_count => int(5) public $lengths => array(5) { [0] => int(1) [1] => int(2) [2] => int(1) [3] => int(66) [4] => int(1) } public $num_rows => int(2) public $type => int(0) })
  • 你在问题​​中的while 循环现在看起来你更接近一个有效的解决方案。如果您没有看到所有行,可以添加 mysqli_num_fields($result_rev); 来验证查询返回了多少行。
  • 我将它与 var_dump 一起使用,结果为 int(5) ,使用 foreach ($row_revs as $row_rev) 它回显 10 行而不是 2
猜你喜欢
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
相关资源
最近更新 更多