PHP Array Veri Çekme
Merhabalar. PHP PDO İle bir site hazırlıyorum sorum şöyledir.
bkategoriler tablom içerisinde sube adında bir sütunum var. Bu sütuna 1,2,3 diye veriler ekliyorum.
Bunları da users tablomdaki her şubeye ait olan veriler ile eşleştirip yazdırmam lazım. Bunu nasıl yaparım. Yardımcı Olur Musunuz ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
$pdo = new PDO('mysql:host=localhost;dbname=veritabani_adi', 'kullanici_adi', 'sifre');
$query = "SELECT bkategoriler.sube, bkategoriler.kategori_adi, users.kullanici_adi FROM bkategoriler LEFT JOIN users ON bkategoriler.sube = users.sube";
$stmt = $pdo->prepare($query);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo "Kategori: " . $row['kategori_adi'] . " - Sube: " . $row['sube'] . " - Kullanıcı: " . $row['kullanici_adi'] . "<br />";
}
SELECT bkategoriler.sube, bkategoriler.kategori_adi, users.kullanici_adi
: bkategoriler tablosundan sube ve kategori_adi sütunlarını, users tablosundan da kullanici_adi sütununu al.
FROM bkategoriler
: bkategoriler tablosunu temel alarak işlem yap.
LEFT JOIN users ON bkategoriler.sube = users.sube
: users tablosunu da şu eşleşmeye göre getir: bkategories'deki sube değeri ile users tablosundaki sube değeri aynı olmalı.
Böylece bkategoriler tablosundaki tüm satırlar döndürülecek.
users tablosunda da bkategoriler.sube = users.sube
eşleşmesini sağlayan tüm satırlar, bkategoriler tablosuyla gelen satırlarla birlikte alınacak.
bkategoriler.sube değerinin users.sube ile eşleşmesinin bulunmadığı bir bkategoriler satırı varsa, users tablosundan gelen veriler NULL olarak gelecek.
Birbiriyle aynı olan sütun adları (id, sube gibi) olabileceği için Select *
veya Select bkategoriler.*, users.*
gibi seçimler yapamayız. Mecburen hangi tablodan hangi sütunları alacağımızı tek tek belirttik.
Peki aynı isimli sütunları almamız gerekseydi? Mesela iki tabloda da id
sütunu varsa, o zaman bunları birer takma ad vererek çağırmalıydık.
Örn: SELECT bkategoriler.id, users.id as user_id, ...
şeklinde yazarsak bkategoriler'in id sütunu id
key'iyle döner. users'taki id değeri ise user_id
key'iyle döner.