Hata Senaryosu;
Bir Sepet uygulamasında sepete atılan ürünid’si ile beraber ürün resmi de atılıyordu. çünkü aynı ürüne ait birden fazla resim ve renk seçeneği vardı.
1. Ürünün ismi: Lodos
->Renk Seçenekleri: kırmızı, beyaz, mavi
->Resimleri : Urun_1.jpg,Urun_2.jpg,Urun_3.jpg2. Ürünün İsmi: RedMooN
->Renk Seçenekleri: Yeşil, Turuncu, Mor
->Resimleri : urun_1.jpg,urun_2.jpg,urun_3.jpg
Hata Şöyle Gerçekleşiyordu: 2. ürün Turuncu Rengi sepete eklendiğinde sepet tablosuna urunIDsi “2” ve resmi “urun_2.jpg” olarak kaydediliyordu. ve gösterilirken ise şöyle bir sorgu çalışıyordu.
$renksor=mysql_query("select * from urun_resim where resim ='".$row["resim"]."'");
$renkrow=mysql_fetch_array($renksor);
echo $renkrow['renk'];
Fakat dönen cevap “Beyaz” oluyordu. server linux olduğundan dosya isimleri FTP’de case insensivite yani Duyarsız olduğundan ürün resimleri kullanıcıya farklı gösteriliyor fakat renk yazdırken sorun oluşuyordu.
Çözüm Yolları 1: (ANA KONU)
Mysql’e resim alanında büyük küçük duyarlı arama yapmamızı sağlıcak bir kod yazmamız gerekiyor.
oda like’a binary şeklinde gönderirsek sorguyu bize tek bir sonuc göndericektir.
$renksor=mysql_query("select * from urun_resim where resim like BINARY '".$row["resim"]."'");
$renkrow=mysql_fetch_array($renksor);
echo $renkrow['renk'];
Çözüm Yolları 2:
daha farklı nasıl kod yazılırdı sorusuna ise resim 2 tane dönüyorsa birde urunidsine göre ekstra koşul eklenebilirdi yani.
$renksor=mysql_query("select * from urun_resim where resim ='".$row["resim"]."' and urunid='".$row["urunid"]."'");
$renkrow=mysql_fetch_array($renksor);
echo $renkrow['renk'];
İlk Yorumu Siz Yapın