mysql - Is it possible to call a function in my SELECT statement in php? -
i have database holds different locations, each of has own longitude , latitude variable. want able use distance function made returns distance between 2 longitudes , latitudes in statement. looking distance between 2 points , pass statement if less radius searching.
distance function:
function distance($lat1, $lon1, $lat2, $lon2) { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; return $miles; }
inside select statement want this:
select * locations distance($latitude, $longitude, 'latitude', 'longitude')
however not working. have tried these without luck...
"select * locations distance($latitude, $longitude, 'latitude', 'longitude') < $radius"
and
sprintf("select * locations %f < $radius", distance($latitude, $longitude, 'latitude', 'longitude'))
is possible preform? if not way around problem? thanks!
edit: tried
"select * locations '" . distance('latitude', 'longitude', $latitude, $longitude) . "' < $radius"
but didn't work if echo it outputs result looking for. doesn't work right when try use inside mysqli_query
i have use same 1 issue: have used in query follow:
/////////////////////////////////////////////////// $sql = "select ... , '".distance2($lat,$long,'tbl_parkinglocations.lat',`tbl_parkinglocations.lat`) ."'<=20 "; ///////////////////////////////////////////////////
but in function:
function distance2($lat1,$long1,$lat2,$long2){ //google api echo $fromaddress=$lat1.','.$long1; echo $toaddress=$lat2.','.$long2; // echo "https://maps.googleapis.com/maps/api/distancematrix/json?origins=$fromaddress&destinations=$toaddress&sensor=false"; $url = json_decode(file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?origins=$fromaddress&destinations=$toaddress&sensor=false")); echo "<br>".$url; exit; $status = $url->rows[0]->elements[0]->status; if($status != 'zero_results'){ $res = round($url->rows[0]->elements[0]->distance->value/1000); return $res; } }
it gets 3rd , 4th param follow: 3rd->tbl_parkinglocations.lat 4th->tbl_parkinglocations.lat
Comments
Post a Comment