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
相关产品推荐
相关产品推荐

