@vlarkanov

Как использовать переменную в качестве имени столбца?

есть функция, долженствующая проверять наличие у пользователя прав. Если право есть - в ячейке 1, если нет - 0.

func checkIfGroupHasRight(db *sql.DB, groupname interface{}, privilege string) bool {
	...
	rows, err := db.Query("SELECT ? FROM hellgate_groups WHERE groupname=?", privilege, strGroupname)
	...
}

checkIfGroupHasRight(db, session.Values["usergroup"], "deleteuser")


При вызове получаю ошибку
error: "sql: Scan error on column index 0, name \"?\": converting driver.Value type []uint8 (\"deleteuser\") to a int: invalid syntax"


Что я делаю не так? Почему privilege (string) воспринимается драйвером как []uint8 и зачем оно пытается привести к int?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 2
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
никак. placeholders'ами в запросах передаются только значения
Ответ написан
EvgenyMamonov
@EvgenyMamonov
Senior software developer, system architect
Вот так можно
query := fmt.Sprintf("SELECT %s FROM hellgate_groups WHERE groupname=?", privilege) 
rows, err := db.Query(query, strGroupname)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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