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