0
Dies ist meine FunktionWie geografische Breite und Länge zu berechnen, basierend auf Abstand in Laravel
public function getRshow(){
$lats = $tenl[0]->latitude;
$longs = $tlog[0]->longitude;
$distance =$par_dis[0]->partner_distance;
$project = "SELECT * , (3956 * 2 * ASIN(SQRT(POWER(SIN(($lats - latitude) * pi()/180/2), 2) +COS($lats * pi()/180) * COS(latitude * pi()/180) * POWER(SIN(( $longs - longitude) * pi()/180/2), 2)))) as distance
FROM `abserve_renterpost` having distance <= $distance order by distance";
$la=DB::SELECT($project);
$lara=array();
foreach ($project as $key => $v) {
$lara[]=(get_object_vars($v));
}
}
Meine Abfrage funktioniert gut, wenn ich nur die Abfrage ausführen, aber wenn ich meine Abfrage für Wert und Array-Format konvertiert es ist nicht funktioniert, Fehler wird wie folgt angezeigt.
(SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' - latitude) * pi()/180/2), 2) +COS(27.7 * pi()/180) * COS(latitude * ' at line 1 (SQL: SELECT * , (3956 * 2 * ASIN(SQRT(POWER(SIN((27.7 - latitude) * pi()/180/2), 2) +COS(27.7 * pi()/180) * COS(latitude * pi()/180) * POWER(SIN((74.12399600000003
- longitude) * pi()/180/2), 2)))) as distance
FROM `abserve_renterpost` having distance <= 200 order by distance))
Es sieht aus wie der Fehler in '$ lats' auf den Wert bezieht. Hast du 'intval ($ lats)' ausprobiert, um sicherzustellen, dass du keine Zeichenfolge verwendest? Versuchen Sie außerdem, Platzhalter ': lats' zu verwenden und binden Sie die Parameter nach dem Vorbereiten Ihrer Abfrage. – 1sloc
ya Ich bin müde, aber es funktioniert nicht gleichen Fehler angezeigt. – murugesh