v2.5.2
Giriş yap

Fatal error: Uncaught Error: Call to a member function rowCount() on boolean hatası

xahmetkilic
967 defa görüntülendi

başlıkta yazdığım gibi bir hata alıyorum localde bir sorun olmuyor. Sunucuya yükleyince böyle bir hata alıyorum.
Hatayı aldığım kod kısmını alta bırakıyorum.

<?php
   $vList = $db->query("SELECT * FROM news where news_category='30'", PDO::FETCH_ASSOC);
    if($vList->rowCount()){
	    foreach ($vList as $vkey => $List) {
		    $Dizi[] = $List["news_title"];
	    }
    }

?>
Cevap yaz
Cevaplar (7)
kartal
685 gün önce

vlist var dump ilw test et önce doluysa kontrolü onun üstünden yap birbaşka şeyde pdo feth sorgudan sonra bir değişkene result et bu ijisinden birini yap olacak

qplot
685 gün önce

DOĞRU KULLANIMI BU


$deger=30;

$vList = $db->prepare("SELECT * FROM news where news_category=?");
$vList->execute([$deger]);
$say=$vList->rowCount();
$liste=$vList->FETCHALL();

    if($say>0){
	    foreach ($liste as $vkey => $List) {
		    $Dizi[] = $List["news_title"];
	    }
    }
    
kargasa1982
686 gün önce
<?php
   $vList = $db->query("SELECT * FROM news where news_category='30'", PDO::FETCH_ASSOC);
    if($vList->rowCount()){
	    foreach ($vList->fetchAll() as $vkey => $List) {
		    $Dizi[] = $List["news_title"];
	    }
    }

?>

döngüye soktuğun $vList sadece bir sorgu, üst satırda rowCount() ile satır sayısını almışsın ama döngüye fetchAll() ile girmemişsin.

ebykdrms
686 gün önce

Eğer veritabanından sorgu sonucu dönmüyorsa query() fonksiyonu false dönüyordur.
Bu durumda siz if koşulunda aslında false->rowCount() yazmış gibi oluyorsunuz.
Hata da bundan bahsediyor: boolean bir değer üzerinde sanki objeymiş gibi rowCount() fonksiyonu çağırıyorsun

Bu hatadan kurtulmak için if koşulunu değiştirmelisiniz.

$vList = $db->query("SELECT * FROM news where news_category='30'", PDO::FETCH_ASSOC);
if($vList){
    foreach ($vList as $vkey => $List) {
	    $Dizi[] = $List["news_title"];
    }
}
mubado
686 gün önce

bir kontrol et $vList den ne geliyor

print_r($vList);
die();

Büyük ihtimalle $vList boş geliyor olabilir.

bu yüzden en başta isset kullanmalısın yani

if(isset($vList) && $vList->rowcount()) 

gibi

munzevi
686 gün önce

yontemi degiskende tutup dene. $sayi = $vlist->rowCount() gibi

tapsin
686 gün önce

Sunucu da php extention eksik onları kontrol et.