来自 mysqli_fetch_array() 和 mysqli_fetch_assoc() 的 foreach 中奇怪的非法字符串偏移量
Strange Illegal string offset in foreach from mysqli_fetch_array() and mysqli_fetch_assoc()
我只是在测试要从数据库 return 中查找的数据集。
我在命令行模式下 运行 这个。当我 var_dump() 数据时,我可以看到数据被 returned,但是当我尝试遍历其中包含重复数据的数组时,我收到下面的警告消息并且无法打印数组项。
我敢肯定,这对某些人来说是显而易见的,但我不知道为什么会这样。我确定我在这里做错了什么......但是什么?
考虑:
$link = mysqli_connect("localhost","username","password","mydatabase") or die("Error " . mysqli_error($link));
$query = "SELECT * FROM citizen_application";
$execute = $query or die("Error in the consult.." . mysqli_error($link));
//execute the query.
$result = $link->query($execute);
$data = mysqli_fetch_array($result); // also tried mysqli_fetch_assoc() and the issue persists
//display information:
//var_dump($data); //This show duplicates in the array returned???
foreach($data as $data_unit){
print_r($data_unit["dob"]."\r");
}
日志中的警告:
Illegal string offset 'dob'
mysqli_fetch_array returns 一个数组,你正在用 foreach 遍历数组,$data_unit 很可能是单个元素而不是数组......试试
foreach($data as $data_unit){
echo $data_unit."\r";
}
或使用 mysqli_fetch_assoc() 并尝试
foreach($data as $fieldname => $data_unit){
echo "$fieldname = $data_unit\r";
}
当 运行 脚本处于命令行模式时,似乎无法使用 foreach() 执行此操作。但我在下面找到了一个解决方案,可以满足我的需求:
while($data = mysqli_fetch_assoc($result)) {
print_r($data["dob"]."\n");
}
我注意到文档中的所有示例都是这样做的。我以为这只是一种偏好。似乎并非如此。我希望这对其他人有帮助,因为这很烦人。您过去可以使用以前的 mysql 函数轻松完成此操作。
我只是在测试要从数据库 return 中查找的数据集。 我在命令行模式下 运行 这个。当我 var_dump() 数据时,我可以看到数据被 returned,但是当我尝试遍历其中包含重复数据的数组时,我收到下面的警告消息并且无法打印数组项。
我敢肯定,这对某些人来说是显而易见的,但我不知道为什么会这样。我确定我在这里做错了什么......但是什么?
考虑:
$link = mysqli_connect("localhost","username","password","mydatabase") or die("Error " . mysqli_error($link));
$query = "SELECT * FROM citizen_application";
$execute = $query or die("Error in the consult.." . mysqli_error($link));
//execute the query.
$result = $link->query($execute);
$data = mysqli_fetch_array($result); // also tried mysqli_fetch_assoc() and the issue persists
//display information:
//var_dump($data); //This show duplicates in the array returned???
foreach($data as $data_unit){
print_r($data_unit["dob"]."\r");
}
日志中的警告:
Illegal string offset 'dob'
mysqli_fetch_array returns 一个数组,你正在用 foreach 遍历数组,$data_unit 很可能是单个元素而不是数组......试试
foreach($data as $data_unit){
echo $data_unit."\r";
}
或使用 mysqli_fetch_assoc() 并尝试
foreach($data as $fieldname => $data_unit){
echo "$fieldname = $data_unit\r";
}
当 运行 脚本处于命令行模式时,似乎无法使用 foreach() 执行此操作。但我在下面找到了一个解决方案,可以满足我的需求:
while($data = mysqli_fetch_assoc($result)) {
print_r($data["dob"]."\n");
}
我注意到文档中的所有示例都是这样做的。我以为这只是一种偏好。似乎并非如此。我希望这对其他人有帮助,因为这很烦人。您过去可以使用以前的 mysql 函数轻松完成此操作。