繁体   English   中英

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

[英]Illegal string offset 'Name' Error

我正在尝试通过此代码访问数据库中的名称字段。 但是每次它都会给我“非法字符串偏移错误”。 我不知道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'];
    }
}

?>

fetch_assoc()仅获取一行-迭代该行会为您提供列值(单字符串,数字等)。 并且您尝试访问此类值上的Name索引,这会导致错误。

您需要使用$product_array = $result->fetch_all(MYSQLI_ASSOC); 以获得所有结果。

同样,可以使用$value['Name']代替$product_array[$key]['Name'] $value['Name']

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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM