So I'm using prepared statements to handle my JSON call from my cordova app to a database.
Right now, I'm trying to get nearby locations based on POSTed latitude and longitude, but the prepared statement isn't working.
When I set the variables to just test, I'm getting a Call to a member function execute() on a non object error.
I don't know what I'm doing wrong!
error_reporting(E_ALL);
$lat = 42.35674265310388;
$lon = -71.13770473755070;
$miles = 5;
//$lat = $_POST["lat"];
//$lon = $_POST["lon"];
$data = array();
$sth = $mysqli->prepare('SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lon) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance FROM members WHERE (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lon) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) < ? ORDER BY distance 5');
$sth->execute(array($lat, $lon, $lat, $lat, $lon, $lat, $miles));
$row = $sth->fetch();
$data["markers"][] = array
(
"lat" => $row['lat'],
"lon" => $row['lon']
);
print_r($data);
echo json_encode($data);
Also, I var_dump()ed the $lat $lon and $miles variables, shown below.
lat - float(42.356742653104)
lon - float(-71.137704737551)
miles - int(5)
$mysqli? What do your database connection lines look like?