Исправление синтаксиса для использования вставки SQL в go

Я получаю сообщение об ошибке при попытке использовать? аргументы при использовании библиотеки 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.

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

TehSphinX 28.03.2018 22:02

Что происходит, если вы используете двойные кавычки для имени пользователя, например:, err = db.Query (INSERT INTO user_account (username, password_hash) VALUES (?, 'passwordhash');, "username")

Eray Balkanli 28.03.2018 22:03

На сайте я вижу в примерах не ?, а $1, $2 и т.д. Может попробовать.

TehSphinX 28.03.2018 22:05

Спасибо за помощь. Я исправил это, используя синтаксис $ 1 (спасибо TehSphinx).

Joseph Petroske 28.03.2018 22:09

Как только это было исправлено, у меня тоже возникла проблема с двойными кавычками. Строка «имя пользователя» добавлялась вместо строки «имя пользователя».

Joseph Petroske 28.03.2018 22:10

Извините, я должен закрыть это, но у меня недостаточно репутации, чтобы опубликовать ответ.

Joseph Petroske 28.03.2018 22:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
6
39
0

Другие вопросы по теме