prepare($sql)){ $stmt->execute(); $stmt->store_result(); _log("Duplicate SQL : Rows found = ".$stmt->num_rows); //record only if same data found at same epoch / tracker_id if($stmt->num_rows == 0) { $sql = "INSERT INTO ".$_config['sql_prefix']."locations (accuracy, altitude, battery_level, heading, description, event, latitude, longitude, radius, trig, tracker_id, epoch, vertical_accuracy, velocity, pressure, connection, place_id, osm_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param('iiiissddissiiidsii', $accuracy, $altitude, $battery_level, $heading, $description, $event, $latitude, $longitude, $radius, $trig, $tracker_id, $epoch, $vertical_accuracy, $velocity, $pressure, $connection, $place_id, $osm_id); if ($stmt->execute()){ # bind parameters (s = string, i = integer, d = double, b = blob) http_response_code(200); $response['msg'] = "OK record saved"; _log("Insert OK"); }else{ http_response_code(500); die("Can't write to database : ".$stmt->error); $response['msg'] = "Can't write to database"; _log("Insert KO - Can't write to database : ".$stmt->error); } }else{ _log("Duplicate location found for epoc $epoch / tid '$tracker_id' - no insert"); } $stmt->close(); }else{ http_response_code(500); die("Can't read from database"); $response['msg'] = "Can't read from database"; _log("Can't read from database"); } }else{ http_response_code(204); $response['msg'] = "OK type is not location"; _log("OK type is not location : " . $data['_type']); } $response = array(); print json_encode($response); fclose($fp); ?>