0
我試圖根據當前的地理位置查詢我的數據庫。 我試圖找到例子,因爲這對我來說都是新的。 當我使用硬編碼值(45.344779和-73.740337)執行此代碼時,它給了我期望的結果。我想通過這個人的當前地理位置的經度和緯度爲字符串做查詢,但它不工作:PHP獲取當前緯度經度並以字符串形式傳遞以查詢phpmyadmin數據庫
<!DOCTYPE html>
<head>
<title>Current Latitude & Longitude</title>
<script>
if(!navigator.geolocation){
alert('Your Browser does not support HTML5 Geo Location. Please Use Newer Version Browsers');
}
navigator.geolocation.getCurrentPosition(success, error);
function success(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
}
function error(err){
alert('ERROR(' + err.code + '): ' + err.message);
}
</script>
<body>
<?php
$hostdb = 'localhost';
$namedb = 'xxxxxx';
$userdb = 'xxxxxx';
$passdb = 'xxxxxx';
try {
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$sql="SELECT *,
SQRT(POW((69.1 * (MyTable.Latitude - :Latitude)) , 2) +
POW((53 * (MyTable.Longitude - :Longitude)), 2)) AS distance
FROM MyTable
ORDER BY distance ASC
LIMIT 3";
$sqlprep = $conn->prepare($sql);
$ar_val = array('Latitude'=> 45.344779, 'Longitude'=> -73.740337);
if($sqlprep->execute($ar_val)) {
// gets and displays the data returned by MySQL
while($row = $sqlprep->fetch()) echo $row['Direction'].' - '.$row['Km'].' : '.$row['Latitude'].' & '.$row['Longitude'].'<br />';
}
$conn = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
任何幫助或提示將不勝感激。謝謝!
感謝Franz的信息和您的時間。我會嘗試按照建議使用Javascript來改變查詢,例如:$ ar_val = array('Latitude'=> UserLat,'Longitude'=> UserLon); – Cbeaulie