v2.5.2
Giriş yap

Sorgu yazımında hata var mı?

pcmemo
594 defa görüntülendi

Merhaba arkadaşlar.
Arama için kullandığım bir sorgu var

$sorgu = $db->prepare('SELECT * FROM tbl_dokuman WHERE 
Status LIKE 1 and (CONCAT(`dokumanadi`, `aciklama`)) LIKE :par');
$sorgu->execute(array(':par' => '%'.$search.'%'));

yukarıdaki kod güzel açılıyor.

Fakat başka bir projede $my_user_id yetkililer dizisinde veya ilgilisi kolonunda olanlarla filtreleyerek listeliyorum ve aşağıdaki kodla arama yapmak istiyorum.

$sorgu = $db->prepare('SELECT * FROM tbl_dokuman WHERE 
Status LIKE 1 and (FIND_IN_SET($my_user_id, yetkililer) or (ilgilisi = $my_user_id)) and (CONCAT(`dokumanadi`, `aciklama`)) LIKE :par');
$sorgu->execute(array(':par' => '%'.$search.'%'));

yani ilave olan sadece alttaki kısım ama çalışmıyor. Aranan kriter olmasına rağmen arama sonucu boş dönüyor.

and (FIND_IN_SET($my_user_id, yetkililer) or (ilgilisi = $my_user_id))

Sorun nerede olabilir? Şimdiden teşekkürler.

Cevap yaz
Cevaplar (2)
pcmemo
1574 gün önce

Ey bilgi sen nelere Kadir'sin. Teşekkürler Tayfun hocam. Allah ilmini artırsın.

tayfunerbilen
1575 gün önce

sen sorgunda tek tırnak kullanıp $my_user_id diye değişken kullanmaya çalışmışsın ama burada değişkenin değerini değil direk string olarak değişkenin adını bastırır :) O yüzden :par kısmına yaptığın gibi bu değer içinde aynı şekilde tanımlaman lazım. Yani kısaca aşağıdaki gibi;

$sorgu = $db->prepare('SELECT * FROM tbl_dokuman WHERE 
Status LIKE 1 and (FIND_IN_SET(:my_user_id, yetkililer) or (ilgilisi = :my_user_id)) and (CONCAT(`dokumanadi`, `aciklama`)) LIKE :par');
$sorgu->execute(array(
    'my_user_id' => $my_user_id,
    'par' => '%'.$search.'%'
));