2 回答
TA贡献1886条经验 获得超2个赞
该行$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);本身只会获取结果集的第一条记录,因此,您可能需要遍历结果集并将每个结果附加到一个数组中,例如
$mapMarkers = [];
while($marker=$connectmaps->fetch(PDO::FETCH_ASSOC)){
array_push($mapMarkers, $marker);
}
$loadmap_json = json_encode($mapMarkers);
您还需要修改您的 javascript 以期待一组标记,因为您当前的代码需要一个结果。您还应该预料到没有结果的可能性(空 JSON 数组)。
for(var i = 0; i < phpden.length(); i++) {
//Do you process of each marker here... e.g. phpden[i].longt
//Or better... create a function that you call for each marker to add them
}
只是最后的建议,但如上所述,您应该考虑使用更具描述性的变量名称。如果您在团队中工作,不仅是为了其他人,也是为了您自己。缩写和不相关的命名变量会使您的代码更难理解。当您在复杂性增加后稍后回来时,您或其他人将浪费时间试图弄清楚“phpden”和“boylam”是什么。
TA贡献1831条经验 获得超10个赞
该fetch()方法仅获取第一条记录。相反,使用该fetchAll()方法。这将为您提供集合中每条记录的多维数组。
另请注意,如果您没有将任何变量传递到查询中,PDO 确实有一个query()方法;无需准备和执行。
<?php
$connectmaps = $db->query(
"SELECT title, longt, latit, description FROM pages WHERE onmap = 1"
);
$loadmaps = $connectmaps->fetchAll(\PDO::FETCH_ASSOC);
$loadmaps_json = json_encode($loadmaps);
添加回答
举报