Veritabanına Resim Kaydetme ve Gösterme

Bu konuyu okuyanlar

psygnosis

Asistan
Katılım
20 Mart 2010
Mesajlar
128
Reaksiyon puanı
1
Puanları
18
Arkadaşlar sql veri tabanına resim nasıl kaydederim.. internetten kopyala yapmayın lütfen özellikle NECATİ den istiyorum


Resim kaydetme ve Resmi gösterme file upload ile help!
 

ilica18

Asistan
Katılım
13 Ekim 2009
Mesajlar
153
Reaksiyon puanı
2
Puanları
18
Selamun aleyküm kardeş öncelikle veritabanına resim kaydı diye birşey yoktur..dediğin gibi file upload ile resmi sunucuda belirteceğin bir klasöre( mesela urunler) yüklersin veritabanına ise sadece resmin ismini kaydedersin daha sonra bu yüklediğin resmi sitede misal <img src="urunlar/resim adı/> şeklinde çağırdığında resim orada gözükecektir..eğer bunu dinamik şekilde yapmak istersen biraz araştırıp nasıl yapabileceğini öğrenebilirsin uzun süreceği için sadece mantığını anlattım burada..Eğer çözüm bulamazsan özel mesaj at gerekli kodları müsait olduğumda göndereyim sana..Başarılar...

cleanvac.com bilgi işlem mesut...
 

Mengu

Öğrenci
Katılım
20 Aralık 2010
Mesajlar
13
Reaksiyon puanı
2
Puanları
0
veritabaninda resim olarak kullanacagin alanin turunu "blob" olarak secersin, ardindan upload islemi sirasinda dosyanin gecici konumuna ulasip dosyayi okur, icini resim alanina kaydedersin. ek olarak bu tabloda content-type alanini da kaydetmeni tavsiye ederim.
 
Katılım
3 Mart 2007
Mesajlar
29,207
Reaksiyon puanı
2,146
Puanları
113
Veritabanına resim kaydetme yoktur ilicanın dediği gibi varsa da ben bilmiyorum hiç duymadım bilmiyorum, he resimlerin her pikselinin renk değerini yazıp onları çağırıp resimi ben programda oluştururum diyorsan orası başka, gerçi onun nasıl yapıldığını ben de bilmem. :)

Resim upload edip yapacaksan en iyi dropbox ile yaparsın bunu. Çünkü resimlerinin adı değişmez, resim adına kadar olan link hep aynıdır, istediğin zaman resimlerin adını değiştirebilirsin. Bu sana kolaylık sağlar diye düşünüyorum.

Mesela resim1 resim2 upload ettin.

http://dl.dropbox.com/u/xxxx/resim1.jpg
http://dl.dropbox.com/u/xxxx/resim2.jpg

şeklinde olacağından veritabanında sadece resim1 resim2 diye tutarsın, linkin tamamını kaydetmene gerek kalmaz.
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
Veritabanındaki tablo işlemlerini @Mengu'nun dediği gibi yapmalısın. Bir de bu işlemi hangi dil ile yapacaksın? PHP mi ASP.Net mi?

Ayrıca şunu da söyliyim. Resmi, veritabanında saklamak büyük sistemlerde performans kaybına yol açar. O yüzden resimleri ayrı bir klasörde tutup veritabanına sadece resim yolunu kaydetmek daha mantıklıdır. Ha dersen ki sistemim aşırı yoğun olacak bi site değil. O zaman resmi veritabanında saklaman gözle görülür performans kaybına yol açmaz.
 

psygnosis

Asistan
Katılım
20 Mart 2010
Mesajlar
128
Reaksiyon puanı
1
Puanları
18
asp.net var resim kaydı ya byte[] dizisine atıolar falan bi hikayeler.. dosya yolunu kaydederek yapabiliyorum da
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
MsSQL kullandığını farzediyorum. Tablondaki resim saklayacağın alanın veri türünü image olarak ayarlayacaksın.

ASP.Net ile resmi kaydetme kodu (ResimKaydet.aspx):
PHP:
protected void ButtonYukle_Click(object sender, EventArgs e)
{
            if (FileUpload1.HasFile)
            {
                Byte[] bytDizi = FileUpload1.FileBytes; // diziye aktar
                MemoryStream ms = new MemoryStream(bytDizi);
                ms.Read(bytDizi, 0, bytDizi.Length);
                ms.Close();

                SqlParameter parametreDosya = new SqlParameter("@resim", SqlDbType.VarBinary, bytDizi.Length, ParameterDirection.Input, false,
                0, 0, null, DataRowVersion.Current, bytDizi);


                SqlConnection baglantiNesnesi = new SqlConnection("server=.\\SQLEXPRESS; database=Master; integrated security=true");
                baglantiNesnesi.Open();
                SqlCommand komutNesnesi = new SqlCommand("insert into Table1 (resim) values (@resim)", baglantiNesnesi);
                komutNesnesi.Parameters.Add(parametreDosya);
                komutNesnesi.ExecuteNonQuery(); // sorguyu çalıştır
                baglantiNesnesi.Close();
                komutNesnesi.Dispose();

                Label1.Text = "İşlem Tamamlandı";
            }
}

Resmi oluşturma kodu için ResimOlustur.aspx sayfası:

PHP:
protected void Page_Load(object sender, EventArgs e)
{
    SqlConnection baglantiNesnesi = new SqlConnection("server=.\\SQLEXPRESS; database=Master; integrated security=true");
    baglantiNesnesi.Open();

    //id değeri sayfa parametresinden alınıyor.
    SqlDataAdapter islem = new SqlDataAdapter("SELECT * FROM Table1 where id=" +     Request["id"], baglantiNesnesi);
    DataSet veriKumesi = new DataSet();
    islem.Fill(veriKumesi);


    Byte[] bytdizi = new Byte[0]; // dizi tanımlanıp boyutlandırılıyor.
    bytdizi = (Byte[])(veriKumesi.Tables[0].Rows[0]["resim"]); // Byte olarak aktar
    MemoryStream bellekAkisNesnesi = new MemoryStream(bytdizi);

    Response.ContentType = "image/jpeg";
    Response.OutputStream.Write(bytdizi, 0, bytdizi.Length); // ekran yazdırılıyor

    baglantiNesnesi.Dispose(); // nesneyi yok et
    islem.Dispose();
    veriKumesi.Dispose();
}

Resmi göstermek için sayfaya bir tane Image, bir tane Textbox, bir tane de Button nesnesi konulur ve butonun click eventine şu kod yazılır:

PHP:
protected void Button1_Click(object sender, EventArgs e)
{
    Image1.ImageUrl = "ResimOlustur.aspx?id=" + TextBox1.Text;
}
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
Eve gidince bakayım. Şuan müsait değilim.
 

mustafayilmaz28

Öğrenci
Katılım
1 Ocak 2010
Mesajlar
4
Reaksiyon puanı
0
Puanları
0
Necati hocamilgiinze teşekkür ederim..ben başka bir kaynaktan sorumun cevaını buldum...tekrar teşekkürler.
 

green_lion

Asistan
Katılım
19 Şubat 2006
Mesajlar
327
Reaksiyon puanı
5
Puanları
18
Selamun aleyküm kardeş öncelikle veritabanına resim kaydı diye birşey yoktur..dediğin gibi file upload ile resmi sunucuda belirteceğin bir klasöre( mesela urunler) yüklersin veritabanına ise sadece resmin ismini kaydedersin daha sonra bu yüklediğin resmi sitede misal <img src="urunlar/resim adı/> şeklinde çağırdığında resim orada gözükecektir..eğer bunu dinamik şekilde yapmak istersen biraz araştırıp nasıl yapabileceğini öğrenebilirsin uzun süreceği için sadece mantığını anlattım burada..Eğer çözüm bulamazsan özel mesaj at gerekli kodları müsait olduğumda göndereyim sana..Başarılar...

cleanvac.com bilgi işlem mesut...

Veritabanına dosya kaydetme diye birşey vardır. Bu imkan ACCESS veritabanında bile vardır. Lütfen yalnış yönlendirme yapmayın. Doğru olan elbette dosya isimlerini saklamak ve resimleri ayrı bir klasöre kopyalamaktır. Masaüstü yazılımlarda ise, bir klasöre sürüyle resim saklamamak için veritabanında tutmak daha tercih edilebilirdir.
 

ESERT

Öğrenci
Katılım
17 Mart 2012
Mesajlar
18
Reaksiyon puanı
0
Puanları
0
veritabanına resimin adın ve uzantısını kaydeder. Gerekli kod yardımları ile veritabanından istediğimiz yere resmi çekebiliriz.
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
38
resimler byte dizisi olarak veritabanında saklanabilir fakat büyük sistemlerde performans sorunları yaşatabilir. internette birçok örneği var. "resimleri byte olarak veritabanında saklamak" şeklinde google da aratırsan birçok örnek çıkacaktır.
 

mucitt

Öğrenci
Katılım
26 Kasım 2017
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Yaş
46
Merhaba: Konu ile biraz alakalı bir soru sormak istiyorum.
urunler diye bir tablom var sütunları (id,baslik,aciklama,resim-yolu,searsh)

ürün ekleniyor ve ürün detay sayfasına girdiğimde ürüne ait bir adet resim görünebiliyor.çünkü ürün ekleme sayfasında resim yükleme bir adet olarak yapılmış. ben ürüne ait diğer resimler diye başka resimlerde ekleyip ürün-detay sayfasında görüntülenmesini isityorum. resimleri görüntülerken sıralamasını ister yan yana ister alt alta görünsün farketmez ben onu bir şekilde düzenlerim.
veri tabanında urunler tablosundan hariç birde urun-resimler diye tablo oluşturdum.
şu şekilde (id,urun-id,resim-yolu) resimler aynı klasör içine eklendiğini varsayalım resimler/ klasörü. Lütfen bunu bi örnek göstererek yapabilirmisiniz. ürün detayına girdiğimde urunler tablosundaki urunun id’sine göre diğer tablodaki resim yolunu çekip sıralatmak istiyorum.
Birçok siteye baktım ancak tam açıklmalı bir örnek göremedim. Günlerdir uğraşıyorum ancak çözemedim. Birde ürüne ilave resimler ekleme sayfasına ne yapmalıyımki isteğim ürünün id’sini çekip ikinci oluşturduğum urun-resim tablomdaki urun-id sutununa yazdırayım. yardımlarınız için şimdiden teşekkürler.
 

mirinkirin

Doçent
Katılım
4 Temmuz 2016
Mesajlar
708
Reaksiyon puanı
358
Puanları
63
urunler tablosu id(primary key), baslik, aciklama, search
urun-resimler tablosu resim_id(primary key), urun_id(foreign key), resim_yolu
ikinci tablodaki urun_id ile birinci tablodaki id birbirine bağlanır. İkinci tabloda urun_id foreign key olduğundan urunler tablosundaki bir ürünün birden fazla resmi olabilir, her resmin de resim_id'si farklı olur.
Çağırırken de join yapıp id ile urun_id'yi eşleştirirsiniz, gelen sonuçların resim_yolu değerlerindeki bütün resimleri çekersiniz.
Bütün resimler aynı klasörde durabilir eğer ayırmak istemiyorsanız. Resmin adını resim_id ile aynı yaparsanız kolaylık olur, resimler isimsizse ürünün adına sırasıyla 1, 2, 3, 4.. sayıları ekleyerek oluşturabilirsiniz.(kitap_resim1, kitap_resim2.. gibi)
Anladığım kadarıyla cevap verdim, çok karışık yazmışsınız.
 

mucitt

Öğrenci
Katılım
26 Kasım 2017
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Yaş
46
resimleri göstermeyi ve upload etmeyi başardım. şimdi farklı bir sorunum daha var bunu çözmem lazım. kendi server'umda klasör oluşturulduğunda klasör izinleri 644 oluyor ve izinleri chmod 777 -R /resimler/ diye her defasında yeniden değiştirmem gerekiyor. Buda sıkıcı bir olay.
websitemde resimler eklenirken her ilana bağımlı diğer resimler klasör oluşturularak klasörlerin içine düşüyor. ben her ilanın resimlerini aynı tek bir klasör içine atılmasını istiyorum. çekilirkende aynı klasör içinden çekecem. biraz karışık oldu anlatım ama özetlemek gerekirse.
şu şekilde resim upload ediliyor :
1 - ilan ekleme sayfasında ilana bağlı diğer resimler eklendikten sonra resimler uploads/listings/ klasörünün içinde o ilana ait bir klasör oluşuyor ve o ilana ait kaçtane resim varsa hepsini o klasörün için atıyor. klasör isimlerinide pics1, pics2, pics3 diye otomatik isimlendiriyor vede veritabanına resimlerin isimlerini kaydediyor. birinci ilana ait diğer resimleri pic1 klasörünün içine atıyor. ikinci ilanın diğer resimlerini ise pic2 klasörünün içine atıyor. klasörleri ben oluşturmuyorum dediğim gibi klasörleri ilan ekleme sayfasındaki form ile otomatik oluşturuyor. Burada yapmak istediğim şey o ilana ait resmleri eklerken yeni klasör oluşturup içine atmak yerine mevcut olan upload/ klasörünün içine atsın istiyorum. klasör oluşursa sorun yaşıyorum. sırf buyüzden böyle birşey yapmam lazım. resim eklerken klasör oluşturulmasın istiyorum yani.
gallery.php içeriği
Kod:
  <?php 
if (!defined("_VALID_PHP"))
      die('Direct access to this location is not allowed.');
     
   $title = (Filter::$id) ? $content->getTitle() : Filter::error("You have selected an Invalid Id", "Content::getTitle()");
   $galdata = (Filter::$id) ? $content->getGallery() : Filter::error("You have selected an Invalid Id", "Content::getGallery()");
?>
<a class="wojo icon positive button push-right lc" data-content="<?php echo Lang::$word->GAL_UPLOAD;?>" onclick="$('#extra').slideToggle();"><i class="icon upload disk"></i> <?php echo Lang::$word->UPLOAD;?></a>
<h1 class="main-header"><?php echo Lang::$word->LST_TITLE;?></h1>
<div class="wojo breadcrumb"><i class="icon home"></i> <a href="index.php" class="section"><?php echo Lang::$word->ADM_HOME;?></a>
  <div class="divider"> / </div>
  <a href="index.php?do=listings" class="section"><?php echo Lang::$word->ADM_LISTINGS;?></a>
  <div class="divider"> / </div>
  <div class="active section"><?php echo Lang::$word->GAL_TITLE;?></div>
</div>
<div class="wojo double fitted divider"></div>
<div class="wojo icon message"> <i class="photo icon"></i>
  <div class="content">
    <div class="header"> <?php echo Lang::$word->GAL_SUB . $title;?> </div>
    <p><?php echo Lang::$word->GAL_INFO;?></p>
  </div>
</div>
<div id="extra" style="display:none">
  <div id="uploader">
    <form id="upload" method="post" action="controller.php" enctype="multipart/form-data">
      <div id="drop" class="fade well"> <?php echo Lang::$word->FM_DROP;?> <a id="upl"><?php echo Lang::$word->BROWSE;?></a>
        <input type="file" name="mainfile" multiple />
        <input name="gupload" type="hidden" value="1">
        <input name="id" type="hidden" value="<?php echo Filter::$id;?>">
      </div>
      <ul>
      </ul>
    </form>
  </div>
  <div class="wojo double fitted divider"></div>
</div>
<?php if(!$galdata):?>
<?php Filter::msgSingleInfo(Lang::$word->GAL_NOGAL);?>
<?php endif;?>
<div id="gallery" class="four columns small-gutters">
  <?php if($galdata):?>
  <?php foreach($galdata as $row):?>
  <div class="row">
    <div class="wojo basic image reveal slide"> <img src="<?php echo SITEURL;?>/thumbmaker.php?src=<?php echo UPLOADURL.'/listings/pics' . Filter::$id . '/'.$row->photo;?>&amp;w=500&amp;h=300" alt="">
      <div class="mask">
        <div class="content"><a href="<?php echo UPLOADURL.'/listings/pics' . Filter::$id . '/'.$row->photo;?>" class="lightbox" title="<?php echo $row->title;?>"><i class="circular info large inverted unhide icon link"></i></a> <a class="imgdelete" data-lid="<?php echo Filter::$id;?>" data-id="<?php echo $row->id;?>" data-name="<?php echo $row->title;?>"><i class="circular danger large inverted trash icon link"></i></a></div>
      </div>
      <div class="caption"><span class="editable" contenteditable="true" data-id="<?php echo $row->id;?>" data-edit-type="gallery"><?php echo $row->title;?></span></div>
    </div>
  </div>
  <?php endforeach;?>
  <?php endif;?>
</div>
<a href="index.php?do=listings" class="wojo icon basic button"><i class="icon left triangle"></i> <?php echo Lang::$word->BACKTO;?></a> 
<script src="assets/js/jquery.knob.js"></script> 
<script src="assets/js/jquery.iframe-transport.js"></script> 
<script src="assets/js/fileupload.js"></script>
 

mucitt

Öğrenci
Katılım
26 Kasım 2017
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Yaş
46
Merhabalar. Çok sorumu soruyorum bilmiyorum ama yapmak istediğim olayı çözemedim vede acil yapmam gerekiyor. bu konuyu birlikte çözeceğimizden eminim. Resim eklemeyi veri tabanına yazdırmayı ve listeletmeyi hepsini yaptım.
Yapmak istediğim şeyse resimler listeme girdiğimde resimler yukardan aşağıya doğru sıralanıyor. her resmin bağlantılı bir ilanı var.
Yada şöyle anlatayım. ilanlar var ve ilanlara ait resimler var. kimi ilana ait 5 adet resim kimi ilana ait 2 resim var. ben resimleri eklerken ilgili ilanın id'sini bağlantı alarak gallery tablosuna (ikinci tablo) kaydediyorum. buraya kadar herşey güzel. resimler listesine girdiğimde her resmin altına veya üstüne hangi ilandan id aldıysa o ilanın diğer başlık sütununu göstertttirmek istiyorum. resmi gallery tablosundan zaten çekiyoruz burda yapacağımız şey diğer listing tablosundan title sutununu yazdırmak. dediğim gibi id'leri bağlantılı olduğundan kolay olsa gerek. konum güncel ve acil cevap veren vermeyen herkeze saygılarımı sunarım.
Resim listelettiğim ve eklediğim sayfamın kodları.
Kod:
 <div id="content" class="box">
            <h1>Diğer Resimler</h1>
            <br>
<?php include("../../config.php"); include("../plugin/picadd.php"); ?>

              <form method="post" enctype="multipart/form-data">         
<div align="left">

<table border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td><b>Resmi Secin :</b></td>
        <td>&nbsp;<input type="file" name="dosya" size="20"></td>
    </tr>
    <tr>
    </table>

                        <div class="col50">
             
        <p class="t-justify">   
                     
                        <label><b>Resmin ekleneceği ürünü seç</b> (eklenmiş son 10 adet ürünü gösterir.)</label></br>
                    <select name="listing_id" style="width:200px;">
                    <option></option>
            <?php mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET COLLATION_CONNECTION = 'utf8_bin'");
                $aaa = mysql_query("select * from listings order by id desc"); while($bbb = mysql_fetch_array($aaa)){ ?>
                    <option value="<?php echo $bbb['id']; ?>"><?php echo $bbb['title']; ?></option>
                    <?php } ?>
                    </select><br><br>
                        <input type="submit" class="input-submit" name="gonder" style="width:200px;" value="Ekle" />

                    </p>
                 
            </div>
<?php

// is_uploaded_file();
// move_uploaded_file();


   if($_FILES){
       
       
       $maxBoyut       = 4568700000;
       $dosyaUzantisi  = substr($_FILES["dosya"]["name"],-4,4);
       $dosyaAdi       = rand(1,99999).$dosyaUzantisi;
       $dosyaYolu      = "../../uploads/listings/".$dosyaAdi;
       
       
         if($_FILES["dosya"]["size"]>$maxBoyut){
             
             echo "<h2>dosya boyutu 700kb'dan yuksek olamaz...</h2>";
             
         }else {
             
             
             $dosya = $_FILES["dosya"]["type"];
             
         if($dosya == "image/jpeg" || $dosya == "image/png" || $dosya == "image/gif" || $dosya == "application/zip"){
             
             
             if(is_uploaded_file($_FILES["dosya"]["tmp_name"])){
                 
                 
                 $tasi = move_uploaded_file($_FILES["dosya"]["tmp_name"],$dosyaYolu);
                 
                 $kayit = $db->prepare("insert into gallery set 
                 
                               photo=?,
                               title=?,
                               sorting=?
                 
                 ");
                 
                 $title = $_FILES["dosya"]["type"];
                 $sorting = $_FILES["dosya"]["size"];
                 
                 $kayit->execute(array($dosyaYolu,$title,$sorting));
                 
                 if($tasi){
                     
                    echo "<h2>dosya basarıyla yuklendi...</h2>";
                   
                   header("refresh: 2; url=index.php");               
                     
                 }else {
                     
                     echo "<h2>dosya tasınırken bir hata olustu...</h2>";
                     
                 }
                 
                 
             } else {
                 
                 echo "<h2>dosya tasınırken bir hata olustu...</h2>";
                 
             }
             
             
         }else {
             
             
            echo "<h2>dosya formati sadece jpg,png yada gif formatinda olmalıdır...</h2>";
             
             
         }
             
             
         }
       
       
       
   }else {
       
        ?> 
         
         
        <div class="dosya">

        </div>
        <?php
         

         
            $resim = $db->prepare("select * from gallery order by id desc LIMIT 0,5 ");
            $resim->execute(array());
            $d = $resim->fetchAll(PDO::FETCH_ASSOC);
         
             foreach($d as $m){
                 
                   ?>
                   <div class="liste">
                                   <h2>İlan Adı : <?php echo $m["title"];?></h2>

                   <img src="<?php echo $m["photo"];?>" width="200" height="100" alt="" /> <br />
                   <a href="?do=sil&id=<?php echo $m["id"];?>">sil</a> &nbsp;
                   <a href="?do=duzenle&id=<?php echo $m["id"];?>">duzenle</a> 
                   
                   </div>
                   <?php
                 
                 
             }
       
   }



?>

        <div id="content" class="box">
            <h1>Diğer Resimler</h1>
            <br>
<?php include("../../config.php"); include("../plugin/picadd.php"); ?>

              <form method="post" enctype="multipart/form-data">         
<div align="left">

<table border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td><b>Resmi Secin :</b></td>
        <td>&nbsp;<input type="file" name="dosya" size="20"></td>
    </tr>
    <tr>
    </table>

                        <div class="col50">
             
        <p class="t-justify">   
                     
                        <label><b>Resmin ekleneceği ürünü seç</b> (eklenmiş son 10 adet ürünü gösterir.)</label></br>
                    <select name="listing_id" style="width:200px;">
                    <option></option>
            <?php mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET COLLATION_CONNECTION = 'utf8_bin'");
                $aaa = mysql_query("select * from listings order by id desc"); while($bbb = mysql_fetch_array($aaa)){ ?>
                    <option value="<?php echo $bbb['id']; ?>"><?php echo $bbb['title']; ?></option>
                    <?php } ?>
                    </select><br><br>
                        <input type="submit" class="input-submit" name="gonder" style="width:200px;" value="Ekle" />

                    </p>
                 
            </div>
            <div class="fix"></div>                     

                        </form>
             
        </div>
 

mucitt

Öğrenci
Katılım
26 Kasım 2017
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Yaş
46
Sanırım henüz okuyan olmadı. Ben uğraşırken yaptım ama sıralamayı bitürlü yapamadım.
inner join ile işi hallettim ama ilk veriden sıralı. Ben son eklenen veriden geriye doğru son 10 veriyi listeletsin istiyorum.

listings tablosundan title(başlık) gallery tablosundansa photos (resmleri )çekiyorum. birbirine bağlayansa listing_id

kodlarım şu şekilde. kod içinde bir hata varki id decs komutumu hiçe sayıyor.
Kod:
        <?php
       

       
            $SQLSorgusu = $db->prepare("SELECT * FROM gallery INNER JOIN listings ON gallery.listing_id=gallery.listing_id; Order By id DESC LIMIT 10;  ");
            $SQLSorgusu->execute(array());
            $d = $SQLSorgusu->fetchAll(PDO::FETCH_ASSOC);
            $m = $SQLSorgusu->fetchAll(PDO::FETCH_ASSOC);
       
             foreach($d as $m){
                 
                   ?>
                 

                  <div class="liste">
      <h2>İlan Adı :             <?php echo $m['title']; ?>


                   <img src="<?php echo $m["photo"];?>" width="200" height="100" alt="" /> <br />
                   <a href="?do=sil&id=<?php echo $m["id"];?>">sil</a> &nbsp; 
                   <a href="?do=duzenle&id=<?php echo $m["id"];?>">duzenle</a> 
                   
                   </div>
 
Üst