Sorgu yazımında hata var mı?
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.
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.'%'
));