v2.5.2
Giriş yap

Sorgu yazımında hata var mı?

pcmemo
597 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.

tayfunerbilen
1585 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.'%'
));