我正在测试我想要从数据库返回的数据集。 我在命令行模式下运行它。当我var_dump()数据时,我可以看到返回的数据,但是当我尝试遍历其中包含重复数据的数组时,我收到下面的警告消息,无法打印数组项。
对某些人来说,我确信这是显而易见的,但我不知道为什么会这样。我相信我在这里做错了什么......但是什么?
考虑:
$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");
}
日志中的警告:
非法字符串偏移' dob'
答案 0 :(得分:1)
mysqli_fetch_array返回一个数组,你用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";
}
答案 1 :(得分:0)
在命令行模式下运行脚本时,似乎无法使用foreach()执行此操作。但是我发现下面的解决方案能够让我得到我想要的东西:
while($data = mysqli_fetch_assoc($result)) {
print_r($data["dob"]."\n");
}
我注意到文档中的所有示例都是这样做的。我认为这只是一种偏好。它似乎并非如此。我希望这有助于其他人,因为这非常令人恼火。您以前可以使用以前的mysql函数轻松完成此操作。