ฉันกำลังพยายามแทรกตำแหน่งทางภูมิศาสตร์ลงในฐานข้อมูล mysql ของฉันอย่างถูกต้อง เพื่อที่ฉันจะสามารถเรียกใช้แบบสอบถามเพื่อรับรายการทั้งหมดภายในรัศมีที่กำหนด
db ของฉันถูกตั้งค่าดังนี้: --id (pk จำนวนเต็ม) --latlon (ดัชนีเชิงพื้นที่จุด)
และฟังก์ชันของฉันซึ่งจะตรวจสอบว่ามีตำแหน่งทางภูมิศาสตร์อยู่หรือไม่และหากไม่ได้มีส่วนแทรกจะเป็นดังนี้:
function addGeoLocation($long,$lat,$deal_id,$db)
{
if($long != '' && $long > 0){
$latlon = 'POINT('.$lat .' ' .$long.')';
$locs = $db->row("SELECT id FROM geolocations WHERE latlon = :latlon",array("latlon"=>$latlon));
if(!$locs)
{
$sql = $db->query("INSERT INTO geolocations set latlon = PointFromText(:latlon)",array("latlon"=>$latlon));
$location_id = $db->lastInsertId();
}
else
{
$location_id = $locs['id'];
}
$locs_pivot = $db->row("SELECT id FROM dailydeals_geolocations WHERE dailydeal_id = :deal_id AND geolocation_id = :location_id",array("deal_id"=>$deal_id,"location_id"=>$location_id));
if(!$locs_pivot)
{
$sql = $db->query("INSERT INTO dailydeals_geolocations (geolocation_id,dailydeal_id) VALUES(:location_id,:deal_id)",array("location_id"=>$location_id,"deal_id"=>$deal_id));
}
}
}
ไม่ว่าฉันจะลองอะไรก็ตาม ฉันไม่สามารถแทรกภูมิศาสตร์ได้ ฉันแค่ได้รับข้อผิดพลาดนี้ต่อไป:
Unhandled Exception. <br />SQLSTATE[22003]: Numeric value out of range:
1416 Cannot get geometry object from data you send to the GEOMETRY field
ความช่วยเหลือใด ๆ จะได้รับอย่างมาก
ขอบคุณมากล่วงหน้า :)