Как использовать mysql spatial с подготовленными операторами

#mysql #prepared-statement #spatial #wkt

#mysql #подготовленный оператор #пространственный #wkt

Вопрос:

У меня есть два сценария, используя следующее утверждение:

  INSERT INTO areas (name, polygon) VALUES (?, POLYGON(?,?,?,?,?,?))
  

Приведет к таким ошибкам:

 Illegal non geometric ''58.03665463092348 14.974815566795314'' value found during parsing
  

Похоже, проблема здесь в том, что мои широта и долгота указаны как тексты внутри POLYGON().

Однако, в соответствии с форматом WKT, мне нужен другой набор () в моем заявлении:

   INSERT INTO areas (name, polygon) VALUES (?, POLYGON((?,?,?,?,?,?)))
  

что приведет только к следующей ошибке:

  Operand should contain 1 column(s)
  

Я в недоумении, как мне использовать подготовленные операторы вместе с пространственной информацией mysql?

Комментарии:

1. Оказывается, если я просто добавлю все в запрос без предварительной подготовки оператора (даже не экранируя значения), это работает как шарм … но я действительно хочу избежать ввода, поскольку он сгенерирован пользователем, какие-либо намеки на то, почему я не могу избежать данных широты / долготы?

2. Это помогло бы увидеть схему таблицы.

3. Это простой столбец polygon вместе с пространственным индексом: CREATE TABLE areas ( id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(45) СОПОСТАВЛЯЕТ utf8_bin ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ NULL, polygon полигон NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ ( id ), ПРОСТРАНСТВЕННЫЙ КЛЮЧ spatial ( polygon ) ) ENGINE=MyISAM AUTO_INCREMENT=10 КОДИРОВКА ПО УМОЛЧАНИЮ = utf8 СОПОСТАВЛЕНИЕ =utf8_bin$$