Php HTML未从SQLdatabase获取数据

Php HTML未从SQLdatabase获取数据,php,android,mysql,cordova,Php,Android,Mysql,Cordova,我正在为我的项目使用Phonegap,它查找当前位置,将纬度和经度传递给php脚本,php搜索sql数据库,如果它在当前位置附近有任何地点/机构。我使用xampp获得输出,它会在html屏幕上返回学院名称。但是当我使用apk文件并在手机中运行相同的代码时,我只得到了当前的lat/lon坐标,但没有得到机构名称。 这是我的geolocation.html代码 <!DOCTYPE html> <html> <head> <title>Devic

我正在为我的项目使用Phonegap,它查找当前位置,将纬度和经度传递给php脚本,php搜索sql数据库,如果它在当前位置附近有任何地点/机构。我使用xampp获得输出,它会在html屏幕上返回学院名称。但是当我使用apk文件并在手机中运行相同的代码时,我只得到了当前的lat/lon坐标,但没有得到机构名称。 这是我的geolocation.html代码

<!DOCTYPE html>
<html>
<head>
    <title>Device Properties Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    document.addEventListener("deviceready", onDeviceReady, false);

    // device APIs are available
    function onDeviceReady() {
        navigator.geolocation.getCurrentPosition(onSuccess, onError);
    }
    var lat;
    var lon;

    // onSuccess Geolocation
    function onSuccess(position) {
        var element = document.getElementById('geolocation');

        element.innerHTML = 'Latitude: '           + position.coords.latitude             + '<br />' +
                            'Longitude: '          + position.coords.longitude          + '<br />' +    
                            'Altitude: '           + position.coords.altitude              + '<br />' +
                            'Accuracy: '           + position.coords.accuracy              + '<br />' +
                            'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
                            'Heading: '            + position.coords.heading               + '<br />' +
                            'Speed: '              + position.coords.speed                 + '<br />' +
                            'Timestamp: '          + position.timestamp                    + '<br />';
        lat= position.coords.latitude;
        lon= position.coords.longitude;
        var xmlhttp;
        if (window.XMLHttpRequest)  {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange=function() {
            if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                document.getElementById("t01").innerHTML=xmlhttp.responseText;
            }
        }

        xmlhttp.open("GET","http://geolocation.webatu.com/Radius.php?lat="+lat+"&lon="+lon,true)
        xmlhttp.send();
    }

    // onError Callback receives a PositionError object
    function onError(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }
    </script>

</head>
<body>
    <p id="geolocation">Finding geolocation...</p>
    <div id="main">
        <div id="t01"></div>
    </div>
</body>
</html>

设备属性示例
//等待加载设备API库
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
函数ondevicerady(){
navigator.geolocation.getCurrentPosition(onSuccess,onError);
}
var lat;
瓦隆;
//成功地理定位
成功时的功能(位置){
var element=document.getElementById('geolocation');
element.innerHTML='Latitude:'+position.coords.Latitude+'
'+ '经度:'+position.coords.Longitude+'
'+ '高度:'+position.coords.altime+'
'+ '精度:'+position.coords.accurity+'
'+ '高度精度:'+position.coords.altitudeAccuracy+'
'+ '标题:'+position.coords.Heading+'
'+ '速度:'+position.coords.Speed+'
'+ '时间戳:'+position.Timestamp+'
'; 纬度=位置坐标纬度; lon=位置坐标经度; var-xmlhttp; if(window.XMLHttpRequest){ //IE7+、Firefox、Chrome、Opera、Safari的代码 xmlhttp=新的XMLHttpRequest(); }否则{ //IE6、IE5的代码 xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”); } xmlhttp.onreadystatechange=函数(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ document.getElementById(“t01”).innerHTML=xmlhttp.responseText; } } open(“GET”http://geolocation.webatu.com/Radius.php?lat=“+lat+”&lon=“+lon,真) xmlhttp.send(); } //OneError回调接收PositionError对象 函数onError(错误){ 警报('code:'+error.code+'\n'+ '消息:'+error.message+'\n'); } 查找地理位置

这是radius.php代码。上传至000webhost.com

<?php
$mysql_host = "****";
$mysql_database = "****";
$mysql_user = "****";
$mysql_password = "****";
$con=mysqli_connect($mysql_host,$mysql_user,$mysql_password,$mysql_database);

// Check connection
if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$rad = 7.442;  // radius of bounding circle in kilometers
$R = 6371;  // earth's mean radius, km
$lat = $_GET['lat'];
$lon = $_GET['lon'];

$sql = mysqli_query($con,"SELECT ID, ClassName,City, latitude, longitude, ( 6371 * acos(   cos( radians('$lat') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('$lon') ) + sin( radians('$lat') ) * sin( radians( latitude ) ) ) ) AS distance FROM geodata HAVING distance < '$rad' ORDER BY distance LIMIT 0 , 20") or die('Error: ' . mysqli_error($con));

while($row = mysqli_fetch_array($sql)){
    echo $row['ID'] . " " . $row['ClassName'];
    echo "<br>";
}

mysqli_close($con);
?>

首先-为什么要费心编写与IE6兼容的XHR代码?你不必担心移动设备上的IE6。也就是说,您是否修改了config.xml中的标记?此处的详细信息:

PhoneGap不能包含PHP包。您可以使用其他方法与数据库交互,也可以使用javascript将Ajax调用中的数据传递到处理响应的PHP页面。(这只是一个例子)


但要回答您的问题,您不能将PHP打包到phonegap中。

我复制粘贴了该代码,因为它太懒了,以至于删除了IE^兼容的代码:p。你也可以告诉我,我在access origin中要写哪个链接?与您的链接中给出的相同?我是个新手。即时回复太多了@Raymond Camden。我没有修改我的config.xml,现在一切都正常了:)。对于遇到此问题的其他人,我必须在config.xml中添加下面的行,我也这样做了。我没有在phonegap中包含php。php代码上传到000webhost中。我使用了ajax的get方法与php进行交互。答复如下:)