You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP嵌入JavaScript失效,报未定义常量pointLat/pointLng求助

解决PHP Undefined Constant(pointLat/pointLng)错误

先看你遇到的错误提示:

warning: Use of undefined constant pointLat - assumed 'pointLat' (this will throw an Error in a future version of PHP).

这个报错的根源有两个,我来一步步帮你修复:

问题1:数组索引未加引号

在PHP中,如果你写$row[pointLat],PHP会把pointLat当成常量去解析,但你并没有定义过这个常量,所以它会默认把它当作字符串'pointLat'处理,同时抛出警告。正确的写法是给数组索引加上单引号或双引号,比如$row['pointLat']。

问题2:循环变量名不匹配

你在循环里定义的变量是while($r = mysqli_fetch_array($result)),但后续调用数组时却用了$row[pointLat],变量名从$r变成了$row,这会导致无法正确读取数据库字段值,甚至可能引发新的错误。

修正后的完整代码段

<script type="text/javascript">
function initMap(){
    var center = {lat:9.93,lng:76.9}
    var mapOption = {zoom: 10,center: center,/*center: new google.maps.LatLng(9.93,76.9)*/};
    var markerOptions ={position:center};
    //create map
    var map = new google.maps.Map(document.getElementById('map'),mapOption);
    //create marker
    //var loc_pat = new google.maps.Marker(markerOptions);
    //loc_pat.setMap(map);
    <?php
        $sql = "SELECT * FROM mappoints";
        $result = mysqli_query($con,$sql);
        while($row = mysqli_fetch_array($result)){ // 统一变量名为$row
            echo ' var myLatlng1 = new google.maps.LatLng('.$row['pointLat'].', '.$row['pointLong'].');'; // 给索引添加单引号
        }
    ?>
}
</script>

额外编码建议

  • 始终给PHP数组的字符串索引加上引号,养成规范的编码习惯,避免类似常量解析错误
  • 保持变量名的一致性,循环定义的变量和后续使用的变量要统一
  • 可以开启PHP的严格错误提示,提前发现这类潜在问题

内容的提问来源于stack exchange,提问作者Denny Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:04:18