"Enter"a basıp içeriğe geçin

Mysql Büyük-Küçük Harf Duyarlılığı ile Aratmak

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.jpg

2. Ü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 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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.