Merhaba. MySQL veritabanından PHP ile veri çekmeye çalışıyorum ama bir sorunla karşılaştım. Benim amacım $_POST ile gelen aramanın veritabanındaki veri ile birebir eşleşmesi. Yani arama kutucuğuna merhaba yazınca eğer veritabanında merhaba değilde “merha” diye bir veri varsa bunu ekrana yazmaması. 2 gündür üzerinde çalışıyorum ama bir türlü beceremedim. Ne yapmam gerekiyor bunun için? Yazdığım arama kodu bu ama tek harf bile yazsam o harfle uyuşan verileri çekiyor bu.
$cikti = $_POST['turkce'];
$sql = "SELECT * FROM jbirincigrup WHERE b_turkce LIKE '%$cikti%'";
$sorgu = $conn -> query($sql);
while($yazdir = $sorgu -> fetch_array()){
$cevir_sozluk = $yazdir['deneme'];
}
LIKE yerine = işlecini kullanabilirsiniz. LIKE işleci benzer olan öğelerle de eşleşir ancak = işleci tam bir eşleşme yapar. Ancak = işlecinin harf büyük-küçüklüğüne dikkat etmediğini unutmayın. Bu işleçlerle ilgili Stack Overflow’daki bir tartışma için şuraya bakabilirsiniz: https://stackoverflow.com/questions/515039/use-or-like-to-compare-strings-in-sql
Estağfirullah. Bilmemek değil, öğrenmemek ayıptır. Ayrıca SQL’in sözdizimini basit de olsa öğrenirseniz bu tür hatalardan gelecekte daha kolay kaçınabilirsiniz.
Haklısınız. Öğrenirken kendimce projeler geliştirmeye çalışıyorum. Takıldığım son bir nokta var şimdi. Veritabanında olmayan bir kelime arattığımda veritabanı hatası alıyorum. Bunun yerine veri bulunamadı gibi bir uyarı vermem mümkün mü? Çıkan sonuçla yazılan yazı eşleşmiyorsa “veri bulunamadı” gibi bir kombinasyon denedim ama sonuç alamadım.
Veritabanından veriyi getiren metod, veri bulunamadığında bir hata fırlatıyor olmalı. Bu hatayı try-catch blokları ile dinleyerek hata durumunda gerekenleri yapabilirsiniz. Bu sözdizimi ile ilgili belgelendirme için şuraya bakabilirsiniz: http://php.net/manual/tr/language.exceptions.php
Sorunu farklı bir while döngüsü ile veritabanındaki bilgileri çekerek ve kullanıcının girdiği metni, bilgileri çektiğim değişkenle karşılaştırarak çözüme kavuşturdum. Şu an çok mutluyum. Tekrar tekrar teşekkürler yardımınız için.
Nispeten ufak veri tabanalrida uygulayabilirsiniz ancak veri sayisi binleri astigi zaman fazladan islem gucu tuketecek bir hareket olur.Uygulamanizin yavas calismasina sebep olacaktir.