v2.5.2
Giriş yap

PHP ile Veritabanından Tek Sorguyla Saydırma Nasıl Yapılır?

redline
432 defa görüntülendi

Merhaba PT.


$query1  = $db -> prepare("SELECT * FROM veriler WHERE veri_kodu = :kod");
$query1 -> execute(["kod" => 1]);
$count1  = $query1 -> rowCount();

echo $count1; // Sonuç: 15

$query2  = $db -> prepare("SELECT * FROM veriler WHERE veri_kodu = :kod");
$query2 -> execute(["kod" => 2]);
$count2  = $query2 -> rowCount();

echo $count2; // Sonuç: 4

$query3  = $db -> prepare("SELECT * FROM veriler WHERE veri_kodu = :kod");
$query3 -> execute(["kod" => 3]);
$count3  = $query3 -> rowCount();

echo $count3; // Sonuç: 28

Yukarıda yapmak istediğim veritabanında veri_kodu satırında bulunan değere göre saydırma işlemi yapıyorum. Bunu her değer için ayrı ayrı sorgu değil de, tek sorguda çıktı sayılarını değişken olarak alabilir miyim?

Cevap yaz
Cevaplar (4)
abdullahx
639 gün önce
$stmt = $db->query("SELECT veri_kodu, COUNT(*) as adet FROM veriler GROUP BY veri_kodu");

$sonuclar = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
extract($sonuclar, EXTR_PREFIX_ALL, 'count');
print_r(get_defined_vars());

echo $count_1;
echo $count_2;
echo $count_3; 
th3ultra
639 gün önce

<?php
//Fonksiyon Oluşturuyoruz

function sorgu($kod) {

global $db;
$query1  = $db -> prepare("SELECT * FROM veriler WHERE veri_kodu = :kod");
$query1 -> execute(["kod" => $kod]);
$count1  = $query1 -> rowCount();

return $count1; 

}

//Kullanım:
echo sorgu(1); //Sonuç: 15
?>

Bu şekilde dener misin?

eminkurt
641 gün önce

$query = $db->query("
    SELECT 
        SUM(CASE WHEN veri_kodu = 1 THEN 1 ELSE 0 END) AS count1,
        SUM(CASE WHEN veri_kodu = 2 THEN 1 ELSE 0 END) AS count2,
        SUM(CASE WHEN veri_kodu = 3 THEN 1 ELSE 0 END) AS count3
    FROM veriler
");
$row = $query->fetch(PDO::FETCH_ASSOC);

echo $row['count1']; // Result: 15
echo $row['count2']; // Result: 4
echo $row['count3']; // Result: 28


denemedim ama şunu bir deneyebilir misin

devepdogukan
641 gün önce

Bunu sql ile veri_kodu alanını gruplayarak halledebilirsin.

SELECT count(veri_kodu) as count,veri_kodu FROM veriler  
GROUP BY veri_kodu