非法字符串偏移“名称”错误

时间:2018-07-03 07:53:11

标签: php mysql arrays

我正在尝试通过此代码访问数据库中的名称字段。但是每次它都会给我“非法字符串偏移错误”。我不知道product_array第二个括号内所需的正确语法。

$qry = "SELECT * FROM Products ORDER BY Product_Id ASC";

$result = mysqli_query($con,$qry);
$product_array = (array) $result->fetch_assoc();
mysqli_close($con);


if (!empty($product_array)) { 
    foreach($product_array as $key=>$value){

      echo $product_array[$key]['Name'];
    }
}

?>

2 个答案:

答案 0 :(得分:1)

fetch_assoc()仅获取一行-迭代该行会为您提供列值(单字符串,数字,...)。然后,您尝试使用该值访问Name索引,这会导致错误。

您需要使用$product_array = $result->fetch_all(MYSQLI_ASSOC);来迭代所有结果。

也可以使用$product_array[$key]['Name']代替$value['Name']

答案 1 :(得分:1)

mysqli::fetch_assoc不会从数据库返回多维数组,而是从数据库返回二维行(只有一个),因此,例如,如果您具有以下字段/数据;

name abc
date 01-01-2018

使用查询和fecth_assoc将返回一个数组,例如;

[ 'name' => 'abc', 'date' => '01-01-2018' ]

因此,使用foreach,您可以执行以下操作;

foreach ($product_array as $key => $value)
{
    // Example printing; name = abc
    echo "{$key} = {$value}";

    // Example prining; abc
    echo $product_array[$key];
}