• 25-01-2014, 13:47:53
    #1
    Beyler;
    Wordpress'de

    $exist = mysql_num_rows(mysql_query("Select * from ".$wpdb->prefix."posts WHERE post_title='$baslik'"));
    
    if ($kontrol == "0"){
    }
    $exists_2 = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE post_title = '$baslik'");
    
    if (empty($exists_2)){
    }
    Her iki halde de tek tırnaklı başlığı kontrol edemiyor.

    Örnek $baslik = "Lep’s World HD";

    ise bunu aramada bulamıyor...

    Bunu nasıl çözebilirim ?

    Derdim şu başlığı arat başlık mevcut ise if else komutu ile başlık mevcut desin.
    Başlık yok ise veritabanına eklesin...

    Bu dediklerimi yapabiliyorum fakat bu tarz bir başlıklı içerik gelince Başlık mevcut değil deyip içeriği listeliyor. Sonrasında Ekle dediğimde ise Başlık zaten mevcut hatası veriyor.

    Yani ilk aramada başlığı bulamıyor fakat veritabanına ekle deyince bu sefer bulabiliyor.

    Daha önceden araştırmıştım sanırım php'de bir koruma sistemi bazı özel karakterlerin veritabanına yazılmasını engellemek için yapılmış...

    Bu mevzuyu nasıl çözerim ? ? ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 13:47:53 -->-> Daha önceki mesaj 13:32:02 --

    Çözdüm http://php.net/manual/en/function.my...ape-string.php
    ' işaretini \' şeklinde aratmalıyım...
  • 26-01-2014, 14:32:11
    #2
    Başlık tam olarak eşleşmiyor olabilir. mysql_error çıktısı var mı, varsa nedir, kontrol et.
  • 26-01-2014, 16:06:53
    #3
    Başlığın içindeki tırnak işareti sorguyu bozuyor. Bunu çevirmek için PHP'de ve WordPress'in sınıflarındaki escape fonksiyonunu kullanabilirsin.

    Tavsiyem tüm mysql işlemlerinde escape yöntemini kullan. SQL Inject'e kökten çözüm
  • 26-01-2014, 20:53:27
    #4
    böyle deneyin
    $exist = mysql_num_rows(mysql_query("Select * from ".$wpdb->prefix."posts WHERE post_title='".mysql_real_escape_string($baslik)."'"));
    
    if ($kontrol == "0"){
    }
    $exists_2 = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE post_title = '".mysql_real_escape_string($baslik)."'");
    
    if (empty($exists_2)){
    }
  • 27-01-2014, 02:51:54
    #5
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    böyle deneyin
    $exist = mysql_num_rows(mysql_query("Select * from ".$wpdb->prefix."posts WHERE post_title='".mysql_real_escape_string($baslik)."'"));
    
    if ($kontrol == "0"){
    }
    $exists_2 = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE post_title = '".mysql_real_escape_string($baslik)."'");
    
    if (empty($exists_2)){
    }
    Ek olarak if şartını şu şekilde değiştirirseniz sizin için daha iyi olur.

    if ( $kontrol === 0 ) {
    
    }
    Tırnaklar içerisine yazılmış bir rakamı PHP integer değil de string olarak yorumlayacaktır. İki eşittir ile yapılan değer eşitliği kontrolünde bu bir sorun olarak karşınıza çıkmaz ama üç eşittir ile tip ve değer kontrolü yaptığınızda hemen belirir. Lütfen veri türlerine biraz önem verin.