#mysql #codeigniter #geolocation #polygon
#mysql #codeigniter #геолокация #полигон
Вопрос:
что не так с моим кодом?
$this-> db-> query(«обновить набор профилей polygon = POLYGON((0 0,82 33,23 66,0 0)) где id = 1»);
полигон — это столбец с типом geometric (многоугольник). я вставляю этот «ПОЛИГОН((0 0,82 33,23 66,0 0))» в этом столбце в phpmyadmin и он сохраняется, но запрос wuth к нему не работает
Комментарии:
1. что возвращает ПОЛИГОН, вы можете показать здесь? И попробуйте объединить его в своем запросе
2. Ошибка запроса @M.Hemant: у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования около ‘0,82 33,23 66,0 0))
3. Вам нужен double (( )) — разве это не должно быть просто по 1 для каждого?
4. @Antony я пробовал это с одиночными родительскими элементами, но не сработало
Ответ №1:
Попробуйте это — он использует конструктор запросов (часть Codeigniter), поклонником которого я являюсь!!
$this->db->set('polygon','POLYGON(0 0,82 33,23 66,0 0)',false);
$this->db->where('id',1);
$this->db->update('profile');
Обратите внимание, что false
останавливает CI от цитирования / экранирования вашего запроса. Очевидно, что если вы принимаете информацию, предоставленную пользователем, то это должно быть проверено на предмет внедрения SQL в другом месте или этот запрос изменен.
Ответ №2:
Я нашел ответ
$this->db->query("update profile set polygon = ST_GeomFromText('POLYGON((0 0,82 33,23 66,0 0))') where id = 1");