sql >> Databáze >  >> RDS >> PostgreSQL

Vložte $$ do řetězce v dolarech v PostgreSQL

Použijte různé dolarové uvozovky místo toho:

select upsert(
   $unique_token$INSERT INTO zz(a, b) VALUES (66, 'ha$$hahaha')$unique_token$,
   $unique_token2$UPDATE zz SET a=66, b='hahahaha' WHERE a=66$unique_token2$
   )

Každý konec musí odpovídat každému začátku. Tyto dva páry nemusí být odlišné, ale je to tak nejbezpečnější.

To stále ponechává teoretickou šanci, že dolarová kotace může být shodná v řetězci.

Pokud vytváříte dotaz ručně, stačí zkontrolovat $ v řetězci. Pokud vytváříte dotaz z proměnných, můžete použít quote_literal(querystring) místo toho.

K dispozici je také pohodlný format() funkce.

Viz:

Stranou:Předpokládám, že víte, že tato forma dynamického SQL je extrémně zranitelná vůči SQL injection? Cokoli tohoto druhu by mělo být pouze pro velmi soukromé nebo velmi bezpečné použití.




  1. Laravel MySql DB připojení s SSH

  2. Rozdíly mezi INT a UUID v MySQL

  3. Připojení codeigniter k mysql a oracle ve stejné aplikaci

  4. Záznamy založené na kurzoru v PostgreSQL