find metinle ilgili MySQL sorgu yardım

2 Cevap php

I eventname alan (tek tırnak dahil) bu metni içeren tüm satırları almak gerekiyor

's Birthday

Ben bu denedim ama hata veriyor:

select * from fab_scheduler where eventname like '%\'s Birthday%'

Nasıl böyle bir sorgu oluşturmak mı?

Teşekkürler

2 Cevap

Eğer SQL 's dahil etmek istiyorsanız, escape bunu gerekir:

There are several ways to include quote characters within a string:

  • A "'" "" "''" olarak yazılmış olabilir ile aktardığı bir dize içinde'.
  • A "" "" "ile tırnaklı bir dizge içindeki" "" "" olarak yazılmış olabilir
  • Bir kaçış karakteri ("\") tarafından alıntı karakterin önüne
  • A “'” inside a string quoted with “"” needs no special treatment and need not be doubled or escaped. In the same way, “"” inside a string quoted with “'” needs no special treatment.

Bir programda SQL inşa edilir, ayrıca, sen güçlü programlama dili mysql_real_escape_string veya eşdeğerini kullanarak SQL sorguları geçer değişkenleri kaçan düşünmelisiniz. (; "Kullanıcıların" koşullara bağlı olarak "bütün internet" anlamına gelebilir unutmayın muhtemelen kullanıcılar) Bunu yapmamak için veri kaynağını kontrol kişiye tarafından SQL enjeksiyon saldırıları için uygulama savunmasız yapacak değişkenleri söyledi.

Edit: Yukarıda dev.mysql.com talimatları Kote.

Çift tırnak kullanımı, ya da tek tırnak kaçmak ya.

select * from fab_scheduler where eventname like "%'s Birthday%"

select * from fab_scheduler where eventname like '%''s Birthday%'