v2.5.2
Giriş yap

PHP'de tek bir sorgu ile veriye ait bütün her şeyi çekme

ilkertuncer
647 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar.

Amamcım şu. Elimde iki tablom var.

Bu tabloarın ilki 'posts' tablosu. Bu tabloda verilerimi tutuyorum. Tablom: https://prnt.sc/NvPTlgaSEL20
Diğer tablom ise 'categories' bu tablomda ise kategorilerimi tutuyorum. Tablom: https://prnt.sc/VKUO1_V2kN3N

Verimi çekerken diğeceğim ki;
Getten gelecek verim ile alakalı her şeyi veeklenmiş kategori adını (başka tablodaki) getir.

İki farklı sorgu ile çekersem, yani kategorisini şu şekilde;

    <?php $categories = $db->query('SELECT categories.*, COUNT(posts.id) as toplamCategory FROM categories
    LEFT JOIN posts ON FIND_IN_SET(categories.id, posts.category_id)
    GROUP BY categories.id DESC')->fetchAll(PDO::FETCH_ASSOC); ?>   
    

Verimi tuttuğum tabloadan veri bilgimi şu şekilde;

    <?php
    
    if (!isset($_GET['url']) || empty($_GET['url'])){
        header('Location:404.php');
    }
    
    $datas = $db->prepare('SELECT * FROM posts WHERE url = ?');
    $datas->execute([
        $_GET['url']
    ]);
    $data = $datas->fetch(PDO::FETCH_ASSOC);
    
    if (!$data){
        header('Location:404.php');
        exit;
    }
    
    ?>

( $data[''] olarak) 2 farklı forach ile çekersem aynı veriyi kaç tane kategori sayısı varsa o kadar çekiyor ve her farklı çektiğinde de kategoiri ismini diğer kategori adlıryla değiştiriyor

Yardımcı olabilirseniz sevinirim.

ilkertuncer
725 gün önce

Merhabalar. Dediğinz mantıkta yaptım fakat hala hata alıyorum.

$kat_id = $_GET['url']; sayfaının en üstüne gelecek şekilde yazdım fakat sorgumu farklı şekillerde değiştirirsem şu sonular çıkıyor.

    <?php $categories = $db->query("SELECT posts INNER JOIN categories 
    WHERE categories.id = $kat_id
    ORDER BY posts.id DESC")->fetchAll(PDO::FETCH_ASSOC); ?> 

dersem hatam = Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INNER JOIN categories WHERE categories.id = deneme-konu ORDER BY posts.id ...' at line 1 in C:\xampp\htdocs\ilkertuncer.com\blog\page.php:38 Stack trace: #0 C:\xampp\htdocs\ilkertuncer.com\blog\page.php(38): PDO->query('SELECT posts IN...') #1 {main} thrown in C:\xampp\htdocs\ilkertuncer.com\blog\page.php on line 38

------------

    <?php $categories = $db->query("SELECT  from posts INNER JOIN categories 
    WHERE categories.id = $kat_id
    ORDER BY posts.id DESC")->fetchAll(PDO::FETCH_ASSOC); ?> 
    
dersem hatam = Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'from posts INNER JOIN categories WHERE categories.id = deneme-konu ORDER B...' at line 1 in C:\xampp\htdocs\ilkertuncer.com\blog\page.php:38 Stack trace: #0 C:\xampp\htdocs\ilkertuncer.com\blog\page.php(38): PDO->query('SELECT from po...') #1 {main} thrown in C:\xampp\htdocs\ilkertuncer.com\blog\page.php on line 38

--------

    <?php $categories = $db->query("SELECT * from posts INNER JOIN categories 
    WHERE categories.id = $kat_id
    ORDER BY posts.id DESC")->fetchAll(PDO::FETCH_ASSOC); ?>
    
dersem ki bu şekilde dememem lazım çünki konu içeriği çekiyorum | hatam = Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'deneme' in 'where clause' in C:\xampp\htdocs\ilkertuncer.com\blog\page.php:38 Stack trace: #0 C:\xampp\htdocs\ilkertuncer.com\blog\page.php(38): PDO->query('SELECT * from p...') #1 {main} thrown in C:\xampp\htdocs\ilkertuncer.com\blog\page.php on line 38

------- 

    Hatalarım Bu şekilde oluyor. Yardımcı olabilirsen çok memnun olurum.