Запрос к SphinxSearch на Go?

Всем привет!
Делаю запрос к сфинкусу, просто конкатенирую строку запроса с нужными параметрами
rows, err := sphinx.Query("SELECT id " +
        "FROM my_index" +
        " WHERE MATCH('(@first_name " + name + ") (@city " + city + ")')" +
        " AND bdate = " + fmt.Sprintf("%d", Bdate) +
        " AND bmonth = " + fmt.Sprintf("%d", Bmonth) + " AND byear IN (" + fmt.Sprintf("%d", Byear) + ", 0)")

Всё работает отлично, но небезопасно.

Пытаюсь делать так:
rows, err := sphinx.Query("SELECT id FROM my_index" +
         " WHERE MATCH('(@first_name ?) (@city ?)') AND bdate = ?" +
         " AND bmonth = ? AND byear IN (?, 0)", 
         name, city, fmt.Sprintf("%d", Bdate), fmt.Sprintf("%d", Bmonth), fmt.Sprintf("%d", Byear))

Выдаёт ошибку Error 1047: unknown command (code=22)
В чём может быть дело?

Использую import "database/sql"
sphinx, err := sql.Open("mysql", "tcp(127.0.0.1:9306)/my_database")
  • Вопрос задан
  • 502 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ghostiam
На Go писатель, серверов пинатель.
Сфинкс не работает с prepare statements, сам столкнулся с этой проблемой. Как решение, экранировать символы самостоятельно.

Вот как сделано экранирование в апи сфинкса для пхп
https://github.com/sphinxsearch/sphinx/blob/6adceb...
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
в хз каком коннекторе, сфинкс не со всеми работает, например, неахти с родным МуСкульным (теперь уже Оракловским)

трейсьте что отправляет собственно сфинксу

а насчет небезопасно - это как? думаете, получится с индексом склиньекцию замутить?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы