• 18-08-2020, 13:29:12
    #1
    SORUN ÇÖZÜLDÜ, TEŞEKKÜRLER :
    MuhammetDemirel adlı üyeden alıntı: mesajı görüntüle
    Soru içaretlerinden sonraki virgül yerine AND kullanın. WHERE a = ? AND b = ? gibi.
    Merhaba dostlar,

    Ajax ile PHP'de bir veritabanı sorgusu çalıştırıp dönen değeri işlemek istiyorum ama bir sorunla karşı karşıyayım.

    $_POST Değeri:
    Array
    (
    [whatIsThisPost] => Suggestion
    [forWhat] => wordID
    [wantedID] => 25
    [oldValue] => tr
    [newValue] => fr
    )

    Kod:
    Sorun:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',`wantedID` = '25',' at line 2

    Bir türlü çözemedim dostlar. Yardımcı olabilecek bir arkadaş varsa sevinirim, teşekkürler.
  • 18-08-2020, 13:34:49
    #2
    Prepare yazan parantezi çift tırnak içine alın tek değil
  • 18-08-2020, 13:35:38
    #3
    berkaycatak adlı üyeden alıntı: mesajı görüntüle
    Prepare yazan parantezi çift tırnak içine alın tek değil
    Aynı hata hocam, denemiştim onu da
  • 18-08-2020, 13:38:17
    #4
    <?php
    
    $oneriKontrolSorgu = $db->prepare("SELECT * FROM suggestions WHERE forWhat = ?, wantedID = ?, oldValue = ?, newValue = ?");
    $oneriKontrol = $oneriKontrolSorgu->execute(array($forWhat, $wantedID, $oldValue, $newValue));
    
    $oneriDB = $oneriKontrol->fetch();
    if($oneriKontrol){
    print_r($oneriDB);
    }else{
    print_r($oneriKontrolSorgu->errorInfo());
    }
    
    ?>
    dener misiniz?
  • 18-08-2020, 13:40:45
    #5
    OmerSRN adlı üyeden alıntı: mesajı görüntüle
    <?php
    
    $oneriKontrolSorgu = $db->prepare("SELECT * FROM suggestions WHERE forWhat = ?, wantedID = ?, oldValue = ?, newValue = ?");
    $oneriKontrol = $oneriKontrolSorgu->execute(array($forWhat, $wantedID, $oldValue, $newValue));
    
    $oneriDB = $oneriKontrol->fetch();
    if($oneriKontrol){
    print_r($oneriDB);
    }else{
    print_r($oneriKontrolSorgu->errorInfo());
    }
    
    ?>
    dener misiniz?
    Hocam ilk olarak fetch() fonksiyonunun yanlış kullanımından dolayı bir hata çıktı. Ancak o hatayı;

    $oneriDB = $oneriKontrol->fetch(); ----->>>> $oneriDB = $oneriKontrolSorgu->fetch();

    Şeklinde çözdüm. Fakat sonuca geldiğimizde hata şu şekli aldı;
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', wantedID = '25', oldValue = 'tr', newValue = 'fr'' at line 1
    )

    Devam ediyor
  • 18-08-2020, 13:44:54
    #6
    emrecanozkan adlı üyeden alıntı: mesajı görüntüle
    Hocam ilk olarak fetch() fonksiyonunun yanlış kullanımından dolayı bir hata çıktı. Ancak o hatayı;

    $oneriDB = $oneriKontrol->fetch(); ----->>>> $oneriDB = $oneriKontrolSorgu->fetch();

    Şeklinde çözdüm. Fakat sonuca geldiğimizde hata şu şekli aldı;
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', wantedID = '25', oldValue = 'tr', newValue = 'fr'' at line 1
    )

    Devam ediyor
    <?php
    $oneriKontrolSorgu = $db->query("SELECT * FROM suggestions WHERE forWhat = '{$forWhat}', wantedID = '{$wantedID}', oldValue = '{$oldValue}', newValue = '{$newValue}'", PDO::FETCH_ASSOC);
    
    if($oneriKontrolSorgu){
    print_r($oneriKontrolSorgu);
    }else{
    print_r($oneriKontrolSorgu->errorInfo());
    }
    ?>
    query ile deneyelim bu sefer. Eğer çalışırsa size gelen değerleri htmlspecialchars ile filtreleyin. Yine çalışmazsa gelen verileri bize tekrar iletin.
  • 18-08-2020, 13:57:00
    #7
    OmerSRN adlı üyeden alıntı: mesajı görüntüle
    <?php
    $oneriKontrolSorgu = $db->query("SELECT * FROM suggestions WHERE forWhat = '{$forWhat}', wantedID = '{$wantedID}', oldValue = '{$oldValue}', newValue = '{$newValue}'", PDO::FETCH_ASSOC);
    
    if($oneriKontrolSorgu){
    print_r($oneriKontrolSorgu);
    }else{
    print_r($oneriKontrolSorgu->errorInfo());
    }
    ?>
    query ile deneyelim bu sefer. Eğer çalışırsa size gelen değerleri htmlspecialchars ile filtreleyin. Yine çalışmazsa gelen verileri bize tekrar iletin.
    errorInfo() fonksiyonunda hata çıktı fakat şu şekilde o hatayı çözdüm:

    $oneriKontrolSorgu->errorInfo() ----->>>> $db->errorInfo()

    Ancak genel problem yine devam ediyor;
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', wantedID = '25', oldValue = 'tr', newValue = 'fr'' at line 1
  • 18-08-2020, 14:11:48
    #8
    Soru içaretlerinden sonraki virgül yerine AND kullanın. WHERE a = ? AND b = ? gibi.
  • 18-08-2020, 14:18:12
    #9
    MuhammetDemirel adlı üyeden alıntı: mesajı görüntüle
    Soru içaretlerinden sonraki virgül yerine AND kullanın. WHERE a = ? AND b = ? gibi.
    Çalıştı, hocam. Çok teşekkür ederim