Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

CakePHP meminta garis lintang bujur terdekat dari database

tidak ada lagi VirtualFields di kue 3 tetapi Anda masih dapat membuat alias untuk bidang terhitung Anda

Seperti yang disarankan oleh @ndm Anda sebaiknya mengikat $latitude dan $longitude untuk mencegah injeksi SQL

$distanceField = '(3959 * acos (cos ( radians(:latitude) )
    * cos( radians( Sightings.latitude ) )
    * cos( radians( Sightings.longitude )
    - radians(:longitude) )
    + sin ( radians(:latitude) )
    * sin( radians( Sightings.latitude ) )))';

menggunakan di mana

$sightings = $this->Sightings->find()
    ->select([
        'distance' => $distanceField
    ])
    ->where(["$distanceField < " => $distance])
    ->bind(':latitude', $latitude, 'float')
    ->bind(':longitude', $longitude, 'float')
    ->contain(['Photos', 'Tags']);

menggunakan memiliki

$sightings = $this->Sightings->find()
    ->select([
        'distance' => $distanceField
    ])
    ->having(['distance < ' => $distance])
    ->bind(':latitude', $latitude, 'float')
    ->bind(':longitude', $longitude, 'float')
    ->contain(['Photos', 'Tags']);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan pemicu untuk menghentikan penyisipan atau pembaruan

  2. Hitung baris tabel

  3. Django:Menggunakan sisipan SQL mentah kustom dengan executemany dan MySQL

  4. Cara Instal MySQL dengan phpMyAdmin di Ubuntu 14.04

  5. ORM mana yang harus saya gunakan untuk Node.js dan MySQL?