как мне вставить точку полигона в геометрический столбец mysql с помощью codeigniter?

#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");