v2.5.2
Giriş yap

PDO HATASI

nycxtr
734 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>

PHP

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');
    }
    ?>
PHP

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();

    }
    ?>
PHP

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
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Cevaplar (8)
nycxtr
1551 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
1551 gün önce

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

hakankorkz
1553 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();

    }

PHP

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();

    }

PHP

işinize umarım yarar hocam

hakankorkz
1553 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();

    }

PHP

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();

    }

PHP

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

nycxtr
1553 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
1553 gün önce

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

nycxtr
1553 gün önce

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

qplot
1553 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();

    }
 
PHP