Я получаю сообщение об ошибке при попытке использовать? аргументы при использовании библиотеки go sql.
Когда я делаю что-то вроде:
_, err = db.Query(
`INSERT INTO user_account (username, password_hash) VALUES ("username", 'passwordhash');`,
все работает нормально.
Но когда я делаю следующее:
_, err = db.Query(
`INSERT INTO user_account (username, password_hash) VALUES (?, 'passwordhash');`,
`'username'`)
Я получаю сообщение об ошибке:
pq: syntax error at or near ","
Как исправить эту ошибку? Я подозреваю, что это как-то связано с одинарными кавычками вокруг переменных.
Если это важно, я использую postgreq с драйвером pq.
Что происходит, если вы используете двойные кавычки для имени пользователя, например:, err = db.Query (INSERT INTO user_account (username, password_hash) VALUES (?, 'passwordhash');, "username")
На сайте я вижу в примерах не ?, а $1, $2 и т.д. Может попробовать.
Спасибо за помощь. Я исправил это, используя синтаксис $ 1 (спасибо TehSphinx).
Как только это было исправлено, у меня тоже возникла проблема с двойными кавычками. Строка «имя пользователя» добавлялась вместо строки «имя пользователя».
Извините, я должен закрыть это, но у меня недостаточно репутации, чтобы опубликовать ответ.


Вы пробовали
usernameвместо'username'? Пакетqpсам по себе экранирует значение.