使用PHP while循环检索特定数据并将其发布到google地图上

使用PHP while循环检索特定数据并将其发布到google地图上,php,google-maps,Php,Google Maps,嗨,我对PHP比较陌生,对google maps API也很陌生,但我想从我的mysql数据库中检索数据并将其发布到我的google map上,问题是我需要在数据库A中搜索相关数据,从每个条目中提取一个“id”,然后在数据库B中搜索所有提取的id,最后使用从数据库B中提取的数据在谷歌地图上放置一个标记(数据库B保存“id”以与数据库a、纬度字段和经度字段相对应)。在阅读我的代码后,我希望所有这些都有意义: <?PHP $min = $_POST['min']; $resul

嗨,我对PHP比较陌生,对google maps API也很陌生,但我想从我的mysql数据库中检索数据并将其发布到我的google map上,问题是我需要在数据库A中搜索相关数据,从每个条目中提取一个“id”,然后在数据库B中搜索所有提取的id,最后使用从数据库B中提取的数据在谷歌地图上放置一个标记(数据库B保存“id”以与数据库a、纬度字段和经度字段相对应)。在阅读我的代码后,我希望所有这些都有意义:

<?PHP
    $min = $_POST['min'];
    $result = mysqli_query($con,"SELECT * FROM A WHERE x>".$min);
    while($row = mysqli_fetch_array($result))
    {
        $host=$row['host_id'];
        $result1 = mysqli_query($con,"SELECT * FROM B WHERE host_id=".$host);
        while($row1 = mysqli_fetch_array($result1));
        {
            $lat2=$row1['latitude'];
            $lon2=$row1['longitude'];
            echo  'var myLatLng = new google.maps.LatLng('.$lat2.','.$lon2.');';
            echo  'var aMarker = new google.maps.Marker({';
            echo      'position: myLatLng,';
            echo      'map: map,';
            echo  '});';
        }
    } 
?>

正如我所说的,我对PHP非常陌生,因此,如果您能帮助我了解我的错误所在,我们将不胜感激
谢谢:)

您可以同时连接到两个不同的数据库。对于您正在使用的mysqli_uu扩展:

<?php

$db1 = mysqli_connect('localhost',$username1,$password1);
mysqli_select_db($db1, $database1) or die( "Unable to select database 1");

$db2 = mysqli_connect('localhost',$username2,$password2);
mysqli_select_db($db2, $database2) or die( "Unable to select database 2");

?>
我添加了一个
(int)
来清理您的
$\u POST['min']
变量-这对于防止SQL注入非常重要。对于字符串,您应该使用
mysqli\u real\u escape\u string()
进行调查,或者更好地使用参数化查询:

更新 对于同一数据库中的表,我建议重新配置代码以使用单个SQL语句,并将表连接在一起。比如:

<?php

$sql = "
SELECT B.latitude, B.longitude
FROM B
INNER JOIN A ON (A.host_id = B.host_id)
WHERE A.x > {$min}
";

?>
此外,可能还值得检查SQL中的错误并显示警告:

<?php

$result1 = mysqli_query($con,$sql);
if($result1===FALSE)
{
    $sql_error = mysqli_error($con);
    $js_safe_sql_error = json_encode(utf8_encode($sql_error));
    echo "alert('Database Error: ' + " . $js_safe_sql_error . ");\n";
}
else
{
    while($row1 = mysqli_fetch_array($result1));
    {
        //...
    }
}

?>

您会遇到什么错误?同时,您也对SQL注入非常开放。你需要清理你的输入。地图完全消失了,我让它使用1个while循环从表B(不是我写的数据库B)中提取所有纬度和经度数据,但一旦我使用另一个while循环选择某些数据,使用表A中的数据,地图从我的页面上消失了:/有什么想法吗?首先,感谢你参考我的PHP,他们非常感谢,因为我写的代码对我来说都是新的,而且在我确定的地方边缘非常粗糙!其次,我必须道歉,我在问题中使用了错误的术语,因为“数据库A”和“数据库B”实际上都是同一数据库中的表,我为“新手”的错误感到抱歉,但由于某种原因,连接到数据库似乎不是问题。当我添加第二个while循环以缩小结果时,它使我的地图完全消失,我无法找出我的代码有什么问题……再次感谢您的代码似乎比我的代码好得多,就我所知在玩了很多次之后,我得出结论,我的问题在于:while($row1=mysqli_fetch_数组($result1));{$lat2=$row1['latitude'];$lon2=$row1['latitude'];echo'var mylatng=new google.maps.LatLng('.$lat2','.$lon2');如果我给$lat2和$lon2的值,它工作得很好,而mysqli查询由于某种原因正在提取正确的数据,当从数据库中提取数据时,它只是不使用它,这就好像它无法将单元格中的数据转换成数值,即使它已经是一个数值……我意识到这可能是非常愚蠢的事情,但我确实可以i don’’我真的很感谢你的帮助,它让我发疯了,想让它发挥作用。再次感谢你的评论,我在这个链接上发布了同样的问题,写得稍微好一点——希望在这里更容易找到我的失败,我真的很感激如果你能看一看,我已经把你的错误信息代码放在我的邮件里了,但是我没有忽略它,我非常感谢你的帮助:)
...
WHERE A.x > {$min}
GROUP BY B.host_id
<?php

$result1 = mysqli_query($con,$sql);
if($result1===FALSE)
{
    $sql_error = mysqli_error($con);
    $js_safe_sql_error = json_encode(utf8_encode($sql_error));
    echo "alert('Database Error: ' + " . $js_safe_sql_error . ");\n";
}
else
{
    while($row1 = mysqli_fetch_array($result1));
    {
        //...
    }
}

?>