Php 而循环只显示一行?

Php 而循环只显示一行?,php,jquery,mysql,dictionary,while-loop,Php,Jquery,Mysql,Dictionary,While Loop,这是我从数据库获取位置的代码。我有下面这个脚本来显示地图 <?php include 'db.php'; $sql_locations = "SELECT * FROM location"; $result = mysqli_query($conn,$sql_locations); $count = mysqli_num_rows($result); $markers = array(); while(

这是我从数据库获取位置的代码。我有下面这个脚本来显示地图

<?php
    include 'db.php';   
    $sql_locations = "SELECT * FROM location";          
    $result = mysqli_query($conn,$sql_locations);
    $count = mysqli_num_rows($result);      
    $markers = array();

    while($row = mysqli_fetch_array($result,MYSQL_ASSOC))           
    {  

        $markers = array(       
        array(
        'abc',
        $row['latitude'],
        $row['longitude']
        ));     

    } ?>

函数初始化(){
var映射;
var bounds=new google.maps.LatLngBounds();
变量映射选项={
mapTypeId:“路线图”,
中心:新的google.maps.LatLng(20.5937,78.9629),//需要在英国的某个地方使用“小心”中心
缩放:1,
};
//在页面上显示地图
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
地图.设置倾斜(45);
//多重标记
var标记=;
//在地图上显示多个标记
var infoWindow=new google.maps.infoWindow();
var标记,i;
//在我们的标记阵列中循环并将每个标记放置在地图上
对于(i=0;i

我的地图很好用。我只是面临显示数据库中所有记录的问题。我的while循环只显示表中的第一个,请帮我解决这个问题。
我想用标记显示数据库中的所有位置。在打印时,它只显示表的第一行。在$rows的var_dump上,它显示所有数据。但是我的第一排只有一个标记。我的表中总共有2行。提前感谢。

您正在更新整个阵列,而不是向其中添加元素

改变

<script>
function initialize() {
    var map;
    var bounds = new google.maps.LatLngBounds();
    var mapOptions = {
        mapTypeId: "roadmap",
        center: new google.maps.LatLng(20.5937, 78.9629), // somewhere in the uk BEWARE center is required
        zoom: 1,
    };
    // Display a map on the page
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    map.setTilt(45);

    // Multiple Markers
    var markers = <?php echo json_encode( $markers );?>;



    // Display multiple markers on a map
    var infoWindow = new google.maps.InfoWindow();
    var marker, i;

    // Loop through our array of markers & place each one on the map
    for (i = 0; i < markers.length; i++) {
        var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
        bounds.extend(position);
        marker = new google.maps.Marker({
            position: position,
            map: map,
            title: markers[i][0]
        });

        // Allow each marker to have an info window
        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
                infoWindow.setContent(infoWindowContent[i][0]);
                infoWindow.open(map, marker);
            }
        })(marker, i));

        // Automatically center the map fitting all markers on the screen
        map.fitBounds(bounds);
    }

    //Override our map zoom level once our fitBounds function runs (Make sure it only runs once)
    var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function (event) {
        this.setZoom(5);
        google.maps.event.removeListener(boundsListener);
    });

}
google.maps.event.addDomListener(window, 'load', initialize);

您正在覆盖
循环中的
$markers
变量。因此,您需要执行以下操作:-

或(如果需要外部阵列)


您在每次迭代中都会覆盖变量
$markers

您只需添加一个新的数组元素即可:

$markers[] = array(array('abc',$row['latitude'],$row['longitude']));

在每个循环
$markers[]=array('abc',$row['latitude'],$row['longitude'])上覆盖变量如果有效,请随时将问题标记为已解决
 $markers[] = array(       
    array(
    'abc',
    $row['latitude'],
    $row['longitude']
    ));     
$markers[] = array('abc',$row['latitude'],$row['longitude']); 
$markers[] = array(array('abc',$row['latitude'],$row['longitude']));
// Define the variable
$markers = array();

while($row = mysqli_fetch_array($result,MYSQL_ASSOC))           
{  
    // Push a new element to the array instead of overwrite it.
    $markers[] = array(
        'abc',
        $row['latitude'],
        $row['longitude']
    );     

}