SORU
7 EYLÜL 2012, Cuma


Ekle PostgreSQL tek tırnak ile varchar

5* *bir tablo var.

Ben eklemek değerleri gibi gerek: , *, *user's log*7 8*.

 insert into test values (1,'user's log');
 insert into test values (2,''my users'');
 insert into test values (3,'customer's');

Eğer yukarıdaki ifadelerden birini kaçarsam bir hata alıyorum.

Eğer bunu yapmak için başka bir yöntem ise orada doğru bir şekilde paylaşın lütfen. Önceden hazırlanmış ifadeler istemiyorum.

Mümkün kullanarak sql mekanizması kaçan mı?

CEVAP
7 EYLÜL 2012, Cuma


Tek tırnak kaçan 10* * - ^ ikiye katlanmış . '' yol ve çalışır tabii ki standart.

'user's log'
'user''s log'

Eğer hala standard_conforming_strings = off ile çalıştırmak ya da, genellikle, eğer E ile dize bildirmek için önüne eğer eski sürümleri yaPosıx kaçış dize sözdizimiayrıca eğik çizgi \ ile kaçış:

E'user\'s log'

Ama genellikle tercih değil.
Eğer kaçan tek tırnak ya da çok katlı birçok ile başa çıkmak için, dollar-quoted strings ile PostgreSQL cehennemde alıntı yapabilirsiniz:

'escape '' with '''''
$$escape ' with ''$$

Daha fazla dolar-tırnak arasında karışıklığı önlemek için, dolar fiyatları için daha fazla veya daha az benzersiz bir simge Ekle:

$token$escape ' with ''$token$

Eğer $ karakter istemci yazılımı özel bir anlamı varsa dikkat edin. Ayrıca böyle bir planı olabilir. Bu numarasını veya pgAdmin PostgreSQL gibi standart müşteriler ile durum böyle değil.

Bu işlevler veya ad-hoc SQL komutları plpgsql yazmak için çok yararlıdır. Uygulamanız hazırlanmış deyimleri ya da başka bir yöntem SQL enjeksiyon karşı korumak için kullanmak gerekir, ama hafifletmek olamaz. @Craig's answer bu konuda daha fazla. Daha fazla bilgi için:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • SegaAmerica

    SegaAmerica

    5 Mart 2008
  • Xbox

    Xbox

    1 Kasım 2005