• 24-02-2023, 22:34:45
    #1
    ' ve " karakterleri POST edip Mysql'e gönderirken (R10'un üyeleri ... gibi) bu hatayı aldım aşağıdaki kodla çözebildim sizlerle de paylaşmak istedim.


    https://www.youtube.com/watch?v=PixxFhvq3lk


    Kaynak: https://bilhos.com.tr/you-have-an-er...l-cozulur.html

    <?php
    // icerik adıyla post edilen veriyi alıyoruz
    iceriks= $_POST['icerik'];
    // tırnak ve kesme işaretlerini donusturuyoruz
    $icerik=str_replace("'","\'",$icerik);
    $icerik=str_replace('"','\"',$icerik);
    ?>
  • 24-02-2023, 22:38:28
    #2
    addslashes() de kullanabilirsiniz.
  • 24-02-2023, 23:02:24
    #3
    ByHazerfen adlı üyeden alıntı: mesajı görüntüle
    addslashes() de kullanabilirsiniz.

    Evet bunu da okumuştum. Örnek bir kod yazabilir misiniz?
  • 24-02-2023, 23:25:48
    #4
    BilWeb adlı üyeden alıntı: mesajı görüntüle
    Evet bunu da okumuştum. Örnek bir kod yazabilir misiniz?
    $username = addslashes($_POST['username']);
  • 25-02-2023, 08:30:18
    #5
    mysqli veya pdo kütüphanelerinin query generatorlarını kullanırsanız zaten bunu sizin yerine yapar.
    raw query kullanırsanız bu gerekebilir ama onun için de real escape var ama raw query kullanmanız çok mecbur kalmadıkca tavsiye edilmez.
    hele ki o query e dışarıdan gelen string value var ise. en kompilike query ler bile kütüphanelerin query generatorleri yardımıyla üretilebilir.
    sonuç olarak verdiğiniz çözüm değil sorunun üzerini örtmek oluyor.
  • 25-02-2023, 12:55:46
    #6
    trgino adlı üyeden alıntı: mesajı görüntüle
    mysqli veya pdo kütüphanelerinin query generatorlarını kullanırsanız zaten bunu sizin yerine yapar.
    raw query kullanırsanız bu gerekebilir ama onun için de real escape var ama raw query kullanmanız çok mecbur kalmadıkca tavsiye edilmez.
    hele ki o query e dışarıdan gelen string value var ise. en kompilike query ler bile kütüphanelerin query generatorleri yardımıyla üretilebilir.
    sonuç olarak verdiğiniz çözüm değil sorunun üzerini örtmek oluyor.
    Mysqli kullanıyorduk ve bu sorun meydana geliyordu. Siz ne önerirsiniz? Örnek bir kod üzerinden biraz daha detaylandırmak isterseniz daha iyi olur diye düşünüyorum.
  • 25-02-2023, 13:10:10
    #7
    PDO kullanırsanız bu sorun ortadan kalkıyor, array içinde sql e ekledikleriniz string olarak işleniyor
  • 25-02-2023, 13:17:21
    #8
    Prepare kullanın: https://www.w3schools.com/php/php_my...statements.asp
    prepare kullanmayacaksanız: mysqli için real_escape_string, pdo için quote kullanın
  • 27-02-2023, 00:14:19
    #9
    BilWeb adlı üyeden alıntı: mesajı görüntüle
    Mysqli kullanıyorduk ve bu sorun meydana geliyordu. Siz ne önerirsiniz? Örnek bir kod üzerinden biraz daha detaylandırmak isterseniz daha iyi olur diye düşünüyorum.
    özel ve güzel projeler için doctrine dbal kullanabilirsiniz. https://github.com/doctrine/dbal
    döküman: https://www.doctrine-project.org/pro...ent/index.html
    MySQL, Oracle, Microsoft SQL Server, PostgreSQL, SQLite desteği mevcut
    stabil olarak - pdo_mysql, mysqli, pdo_sqlite, sqlite3, pdo_pgsql, pdo_sqlsrv, sqlsrv, oci8, ibm_db2 - driverları mevcut, normal çok gerek yok ama bunların dışında özel birşey yapmak isterseniz kendi driver class ını yapıya dahil edebilirsiniz.

    eğer düz basit bir şey istiyorsanız da https://github.com/ThingEngineer/PHP...Database-Class kullanabilirsiniz. mysqli driver ını kullanır, mysql 8 ile gelen bazı yeni data type ların olduğu sql querylerinde sorun yaşatabilir.