v2.5.2
Giriş yap

PDO HATASI

nycxtr
690 defa görüntülendi

Merhaba,

MVC ve PDO kullanarak bir proje geliştirmeye çalışıyorum bu iki kavrama yeni geçiş yaptım, daha öncesinde spagetti ve mysqli kullanıyordum. Yapmak istediğim ID gelen değere göre veritabanındaki değeri düzenlemek PDO şöyle bi hata alıyorum;

: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in
NOTICE: UNDEFINED INDEX: DATA IN APPLICATIONVIEWSCATEGORYEDIT.PHP ON LINE 40 Aynı zamanda şöyle bir hatada alıyorum
Edit.php sayfam

<h3 class="panel-title"><?= $params['data']['category_name'];?>Kategori Ekle</h3>

controllers içinde olan category.php sayfası

<?php
public function edit($id){
        if(!$this->sessionManager->isLogged()){helper::redirect(SITE_URL); die();}
        $data = $this->model('categoryModel')->getData($id);
        $this->render('site/header');
        $this->render('site/sidebar');
        $this->render('category/edit');
        $this->render('site/footer');
    }
    ?>

Models klasörü içinde olan categoryModel.php sayfası

<?php
public function getData($id){
        $query = $this->db->prepare("SELECT * FROM category WHERE id = ?");
        $query->execute();
        return $query->fetchAll();

    }
    ?>

Sorgum ve tablo isimleri kesinlikle doğru belki gözümden kaçmıştır hesabına phpmyadmin 'de denedim. print_r($params) şeklinde almaya çalışıyorum array boş dönüyor.

Cevap yaz
Cevaplar (8)
nycxtr
1408 gün önce

Arkadaşlar hepinize teşekkür ederim sorunu çözdüm sayfaya bir array yollamam gerekiyormuş
['data'=> $data] // şu kod olayı çözdü
$this->render('category/edit',['data'=> $data]);

nycxtr
1408 gün önce

sorunum hala devam etmekte print_r params değişkeni array boş dönmekte hala sorunu çözemedim

hakankorkz
1410 gün önce

Hocam Yazım yanlışınız var sanırım

sizin yazımınız


public function getData($id){
        $query = $this->db->prepare("SELECT * FROM category WHERE id = ?");
        $query->execute([$id]); ---> sanırım boyle olması gerekiyor
        return $query->fetchAll();

    }

Düzeltilmiş hali umarım işe yarar

veritabanı bağlantısını db tahmin ediyorum


public function getData($id){
        $query = $db->prepare("SELECT * FROM category WHERE id =:id");
        $query->bindParam(':id',$id,PDO::PARAM_INT) ---> Burada sql enjection koruması yaptık sadece gelen değerin id sayısa bir değer olduğunu belirtik
        $query->execute();
        return $query->fetchAll();

    }

işinize umarım yarar hocam

hakankorkz
1410 gün önce

Hocam Yazım yanlışınız var sanırım

sizin yazımınız


public function getData($id){
        $query = $this->db->prepare("SELECT * FROM category WHERE id = ?");
        $query->execute([$id]); ---> sanırım boyle olması gerekiyor
        return $query->fetchAll();

    }

Düzeltilmiş hali umarım işe yarar

veritabanı bağlantısını db tahmin ediyorum


public function getData($id){
        $query = $db->prepare("SELECT * FROM category WHERE id =:id");
        $query->bindParam(':id',$id,PDO::PARAM_INT) ---> Burada sql enjection koruması yaptık sadece gelen değerin id sayısa bir değer olduğunu belirtik
        $query->execute();
        return $query->fetchAll();

    }

bir de hocam nacizane tavsiyem query ile kullanıcıdan veri almak yerine prepare kullanın sql açıklarını en aza indirgersiniz..

nycxtr
1410 gün önce

Öyle denedim yine aynı sorun devam ediyor normalde böyle kullanıyorum.
return $query->fetch(PDO::FETCH_ASSOC);
böylede sonuç aynı

isimimcokguzel2
1410 gün önce

return $query->fetchAll(); yerine return $query->fetch(); yaparsanız düzelecektir diye düşünüyorum hocam.

nycxtr
1410 gün önce

Hocam PDO Hatası gitti fakat veriyi hala alamıyorum NOTICE: UNDEFINED INDEX: DATA IN APPLICATIONVIEWSCATEGORYEDIT.PHP ON LINE 40

qplot
1410 gün önce

 
public function getData($id){
        $query = $this->db->prepare("SELECT * FROM category WHERE id = ?");
        $query->execute([$id]); ---> sanırım boyle olması gerekiyor
        return $query->fetchAll();

    }