v2.5.2
Giriş yap

Invalid parameter number hatası

rephp7
622 defa görüntülendi
$where= 'yazarlar.yazar like ? ' ;
$array='%' . $searched . '%';
   $yazi_arama = $db->Verigetir(
        "burada inner join ile tablolarımı bağlıyorum",
        "where $where",
        array($array),
        "order BY yazilar.ID ASC"
                );

Gelişmiş arama sayfası yapmaya çalışıyorum.
Şimdi benim arama seçimine uygun olarak where kriterini arttırıp, ona göre array içini de arttırarak tanımlamam lazım.

ŞU AŞAĞIDAKİ KISMIN doğru yazımı nedir?

$where= 'yazarlar.yazar like ? or yazilar.icerik like ?' ;
$array='%' . $searched . '%', '%' . $searched . '%';

UYARI: Invalid parameter number: number of bound variables does not match number of tokens
yazıyor sanırım $where veya $array değişkenini çoğaltamadım.
Bir kontrol edebilir misiniz? doğru yazım nedir?

Cevap yaz
Cevaplar (4)
makifgokce
1155 gün önce

böyle dene

$array = ['%' . $searched . '%', '%' . $searched . '%'];

// ...
"where $where",
$array,
"order BY yazilar.ID ASC"
// ...
rephp7
1155 gün önce

@makifgokce hocam, tamam oldu. Verdiğiniz kodda köşeli parantez [yerine ( şeklinde yazdım oldu.
.

$array = ('%' . $searched . '%', '%' . $searched . '%');

// ...
"where $where",
$array,
"order BY yazilar.ID ASC"
// ...
rephp7
1155 gün önce

hatalı yazmışım düzelttim. Verileri Fonksiyon ile çağırıyorum onda sorun yok.

sadece benim en sonda yazdığım $where ve $array içinin yazımını doğru yapmam lazım. O kısma bakar mısın?

Bu çalışıyor:

$where= 'yazarlar.yazar like ? ' ;
$array='%' . $searched . '%';

Bunun yazımında sorun var : tek tırnak nokta virgül vs bunların yazım şeklinde hata var:

$where= 'yazarlar.yazar like ? or yazilar.icerik like ?' ;
$array='%' . $searched . '%', '%' . $searched . '%';

UYARI: Invalid parameter number: number of bound variables does not match number of tokens

Bir kontrol edebilir misiniz? doğru yazım nedir?

hakankorkz
1155 gün önce

dostum getData yerine prepare yada query olması gerekmiyor mu? bu nasıl bir methot