Email or username:

Password:

Forgot your password?
Dr. Quadragon ❌

So I have this huge MySQL query, which takes 12 input parameters, but all of them are 8 instances of value X and 4 instances of value Y. They're all in different places of the huge query.

How do I bind variables to that in Go in an SQL-safe way?

I see the syntax of "?" but it's not really named, so it works if you have one or two unique parameters, not 12 recurring ones.

5 comments | Expand all CWs
Кира 🌺

@drq прочитала gulag

D:\side\

@drq я не уверен, насколько это хорошая идея, но в голову приходит CTE с селектом констант:
dev.mysql.com/doc/refman/8.0/e

Так можно дать им в рамках запроса локальные имена, но снаружи передать всего единожды.

Наверное. У меня в голове это вроде имеет смысл, начал что-то может иметь смысл в 5 часов утра :blobcatgooglyholdingitsheadinitshands:

Или вот такого рода хохма:
> SELECT … FROM …
> INNER JOIN (SELECT ? AS l1, ? AS l2) locals
> ON true
> WHERE c1 = l1 AND c2 IN (l1, l2)

@drq я не уверен, насколько это хорошая идея, но в голову приходит CTE с селектом констант:
dev.mysql.com/doc/refman/8.0/e

Так можно дать им в рамках запроса локальные имена, но снаружи передать всего единожды.

Наверное. У меня в голове это вроде имеет смысл, начал что-то может иметь смысл в 5 часов утра :blobcatgooglyholdingitsheadinitshands:

­

@drq IIRC, instead of `?` you can use `$1`, `$2` and so on.

If you're tired of writing SQL strings by hand, we maintain the sqrl project at my current job:
github.com/SharperShape/sqrl

It's a bit nicer than concatenating strings with possible typos all the time :)

­

@drq yep, sorry, it works in Postgres, not in MySQL. Have you tried `?1` ?

Go Up