• 27-01-2020, 19:13:01
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba arkadaşlar eski bir kodlamamı pdo ya çevirecektim mysql sorgum aşağıdaki gibi ben bunu nasıl pdo şeklinde yaparım, yapıyorum aslında ama bu varmı kısmını yapamadım

    $varmi = mysql_num_rows(mysql_query("select * from spor where tarih='$tarih' && evsahibi='$evsahibi' && misafir='$misafir'"));
    
    if($varmi>0){
    
    echo"Bu Maç Daha Önce Eklenmiş";
    
    }else{
    $ekle = mysql_query("INSERT INTO spor SET
    hafta = '$hafta',
    mackodu = '$mackodu',
    tarih = '$tarih',
    saat = '$saat',
    bayrak = '$bayrak',
    lig = '$lig',
    mbs = '$mbs',
    sms1 = '$sms1',
    sms2 = '$sms2',
    evsahibi = '$evsahibi',
    misafir = '$misafir',
    ms1 = '$ms1',
    msx = '$msx',
    ms2 = '$ms2',
    iy1 = '$iy1',
    iyx = '$iyx'
    
    ");
    
    if($ekle){
    
    echo "işlem tamam";
    }else{
    
    echo "hata".mysql_error();
    }
    
    }
  • 27-01-2020, 19:27:31
    #2
    Platin üye
    $sorgu = $db->prepare("SELECT * FROM spor where tarih = :p_tarih && evsahibi = :p_ev_sahibi && misafir = :p_misafir");
    $sorgu->bindParam(':p_tarih', $tarih);
    $sorgu->bindParam(':p_ev_sahibi', $evsahibi);
    $sorgu->bindParam(':p_misafir', $misafir);
     $sorgu->execute()
    $sonuc = $sorgu->fetchAll();
    $say = rowCount($sonuc);
    if($say > 0) {}
  • 27-01-2020, 19:52:21
    #3
    Bağlantı kodlarınızı da pdo uyumlu yapmanız gerekir. Aşağıda rowCount ile kaç kayıt olduğunu check eden bir örnek yazdım.

    <?php
    
    $dbhost = "localhost";
    $dbname = "dn_name";
    $dbuser = "db_user";
    $dbpassword = "password";
    
    $dsn = 'mysql:host='.$dbhost.';dbname='.$db_name.';charset=utf8';
    
    try {
        $conn = new PDO($dsn,$dbuser,$dbpassword);
    } catch(PDOException $e) {
        die($e->getMessage());
    }
    
    
    $kontrol = $conn->prepare("select * from spor WHERE tarih = ? && evsahibi = ? && misaif = ?");
    $kontrol->bindParam(1, $tarih);
    $kontrol->bindParam(2, $evsahibi);
    $kontrol->bindParam(3, $misafir);
    $kontrol->execute();
    
    
    if($kontrol->rowCount() > 0) {
        echo "Bu Maç Daha Önce Eklenmiş";
    } else {
        // Burada insert kodlarınızı yazın.
    }
  • 27-01-2020, 19:53:13
    #4
    $database = '';
    $databaseUser = '';
    $password = '';
    try {
    
    $db = new PDO("mysql:host=localhost;dbname=".$database, $databaseUser, $password);
    $db -> beginTransaction();
    $sql = 'SELECT * FROM spor WHERE tarih=:tarih && evsahibi=:evsahibi && misafir=:misafir';
    $result = $db -> prepare($sql);
    $result -> bindValue(':tarih',$tarih,PDO::PARAM_STR);
    $result -> bindValue(':evsahibi',$evsahibi,PDO::PARAM_STR);
    $result -> bindValue(':misafir',$misafir,PDO::PARAM_STR);
    $result -> execute()
    $data = $result -> fetch(PDO::FETCH_ASSOC);
    if(!$data){
    echo"Bu Maç Daha Önce Eklenmiş";
    }else{
    $sql2 = 'INSERT INTO spor (hafta,marckodu,tarih,saat,bayrak,lig,mbs,sms1,sms2,evsahibi,misafir,ms1,msx,ms2,iyl,iyx)
    VALUES (:hafta,:marckodu,:tarih,:saat,:bayrak,:lig,:mbs,:sms1,:sms2,:evsahibi,:misafir,:ms1,:msx,:ms2,:iyl,:iyx)';
    $result = $db -> prepare($sql2);
    
    // işlenecek değer integer ise PDO::PARAM_INT yada diğer tiplerde ise basit bir araştırma ile tip tanımlamalarına bakabilirsin
    
    $result -> bindValue(':hafta',$hafta,PDO::PARAM_STR);
    $result -> bindValue(':marckodu',$marckodu,PDO::PARAM_STR);
    $result -> bindValue(':tarih',$tarih,PDO::PARAM_STR);
    $result -> bindValue(':saat',$saat,PDO::PARAM_STR);
    $result -> bindValue(':bayrak',$bayrak,PDO::PARAM_STR);
    $result -> bindValue(':lig',$lig,PDO::PARAM_STR);
    $result -> bindValue(':mbs',$mbs,PDO::PARAM_STR);
    $result -> bindValue(':sms1',$sms1,PDO::PARAM_STR);
    $result -> bindValue(':sms2',$sms2,PDO::PARAM_STR);
    $result -> bindValue(':evsahibi',$evsahibi,PDO::PARAM_STR);
    $result -> bindValue(':misafir',$misafir,PDO::PARAM_STR);
    $result -> bindValue(':ms1',$ms1,PDO::PARAM_STR);
    $result -> bindValue(':msx',$msx,PDO::PARAM_STR);
    $result -> bindValue(':ms2',$ms2,PDO::PARAM_STR);
    $result -> bindValue(':iyl',$iyl,PDO::PARAM_STR);
    $result -> bindValue(':iyx',$iyx,PDO::PARAM_STR);
    $result -> execute();
    if($result -> rowCount()){
    $db -> rollBack();
    echo "hata";
    }else{
    $db -> commit();
    echo "işlem tamam";
    }
    }
    
    
    } catch ( PDOException $e ){
    print $e->getMessage();
    }
  • 27-01-2020, 20:08:00
    #5
    enesaydeniz adlı üyeden alıntı: mesajı görüntüle
    $sorgu = $db->prepare("SELECT * FROM spor where tarih = :p_tarih && evsahibi = :p_ev_sahibi && misafir = :p_misafir");
    $sorgu->bindParam(':p_tarih', $tarih);
    $sorgu->bindParam(':p_ev_sahibi', $evsahibi);
    $sorgu->bindParam(':p_misafir', $misafir);
     $sorgu->execute()
    $sonuc = $sorgu->fetchAll();
    $say = rowCount($sonuc);
    if($say > 0) {}
    çok teşekkürler hocam ancak Fatal error: Uncaught Error: Call to undefined function rowCount() in C:xampphtdocsabotajax.php:74 Stack trace: #0 {main} thrown in böyle bir hata verdi.
    coder63 adlı üyeden alıntı: mesajı görüntüle
    Bağlantı kodlarınızı da pdo uyumlu yapmanız gerekir. Aşağıda rowCount ile kaç kayıt olduğunu check eden bir örnek yazdım.

    <?php
    
    $dbhost = "localhost";
    $dbname = "dn_name";
    $dbuser = "db_user";
    $dbpassword = "password";
    
    $dsn = 'mysql:host='.$dbhost.';dbname='.$db_name.';charset=utf8';
    
    try {
        $conn = new PDO($dsn,$dbuser,$dbpassword);
    } catch(PDOException $e) {
        die($e->getMessage());
    }
    
    
    $kontrol = $conn->prepare("select * from spor WHERE tarih = ? && evsahibi = ? && misaif = ?");
    $kontrol->bindParam(1, $tarih);
    $kontrol->bindParam(2, $evsahibi);
    $kontrol->bindParam(3, $misafir);
    $kontrol->execute();
    
    
    if($kontrol->rowCount() > 0) {
        echo "Bu Maç Daha Önce Eklenmiş";
    } else {
        // Burada insert kodlarınızı yazın.
    }
    gayet başarılı olmuş hocam sağolun peki bunu bindParam kullanmadan nasıl yaparım?

    geronimos adlı üyeden alıntı: mesajı görüntüle
    $database = '';
    $databaseUser = '';
    $password = '';
    try {
    
    $db = new PDO("mysql:host=localhost;dbname=".$database, $databaseUser, $password);
    $db -> beginTransaction();
    $sql = 'SELECT * FROM spor WHERE tarih=:tarih && evsahibi=:evsahibi && misafir=:misafir';
    $result = $db -> prepare($sql);
    $result -> bindValue(':tarih',$tarih,PDO::PARAM_STR);
    $result -> bindValue(':evsahibi',$evsahibi,PDO::PARAM_STR);
    $result -> bindValue(':misafir',$misafir,PDO::PARAM_STR);
    $result -> execute()
    $data = $result -> fetch(PDO::FETCH_ASSOC);
    if(!$data){
    echo"Bu Maç Daha Önce Eklenmiş";
    }else{
    $sql2 = 'INSERT INTO spor (hafta,marckodu,tarih,saat,bayrak,lig,mbs,sms1,sms2,evsahibi,misafir,ms1,msx,ms2,iyl,iyx)
    VALUES (:hafta,:marckodu,:tarih,:saat,:bayrak,:lig,:mbs,:sms1,:sms2,:evsahibi,:misafir,:ms1,:msx,:ms2,:iyl,:iyx)';
    $result = $db -> prepare($sql2);
    
    // işlenecek değer integer ise PDO::PARAM_INT yada diğer tiplerde ise basit bir araştırma ile tip tanımlamalarına bakabilirsin
    
    $result -> bindValue(':hafta',$hafta,PDO::PARAM_STR);
    $result -> bindValue(':marckodu',$marckodu,PDO::PARAM_STR);
    $result -> bindValue(':tarih',$tarih,PDO::PARAM_STR);
    $result -> bindValue(':saat',$saat,PDO::PARAM_STR);
    $result -> bindValue(':bayrak',$bayrak,PDO::PARAM_STR);
    $result -> bindValue(':lig',$lig,PDO::PARAM_STR);
    $result -> bindValue(':mbs',$mbs,PDO::PARAM_STR);
    $result -> bindValue(':sms1',$sms1,PDO::PARAM_STR);
    $result -> bindValue(':sms2',$sms2,PDO::PARAM_STR);
    $result -> bindValue(':evsahibi',$evsahibi,PDO::PARAM_STR);
    $result -> bindValue(':misafir',$misafir,PDO::PARAM_STR);
    $result -> bindValue(':ms1',$ms1,PDO::PARAM_STR);
    $result -> bindValue(':msx',$msx,PDO::PARAM_STR);
    $result -> bindValue(':ms2',$ms2,PDO::PARAM_STR);
    $result -> bindValue(':iyl',$iyl,PDO::PARAM_STR);
    $result -> bindValue(':iyx',$iyx,PDO::PARAM_STR);
    $result -> execute();
    if($result -> rowCount()){
    $db -> rollBack();
    echo "hata";
    }else{
    $db -> commit();
    echo "işlem tamam";
    }
    }
    
    
    } catch ( PDOException $e ){
    print $e->getMessage();
    }
    teşekkürler hocam ekleme kısmından faydalanacağım kesin bindparam konusunu hiç incelememiştim, bindparam kullanmadan nasıl yaparım acaba?
  • 27-01-2020, 20:10:19
    #6
    Platin üye
    Neden bindParam kullanmak istemiyorsunuz ki? Sistemin daha güvenli olması açısından kullanılması gereken bir fonksiyon ama illa kullanmayacaksanız sizde ki gibi direkt parametre koyabilirsiniz
  • 27-01-2020, 20:14:02
    #7
    http://www.erbilen.net/pdo-kullanimi/ şurayı incelerseniz bi çok kullanım türünü görürsünüz hocam
  • 27-01-2020, 20:21:59
    #8
    Direk parametre geçirebilirsiniz fakat binParam kullanmanızı öneririm.
    Sonuçta pdo kendi içinde injection vb açıklara karşı koruma sağlıyor ve bunları sonuna kadar kullanmak gerekir.
  • 27-01-2020, 20:56:30
    #9
    enesaydeniz adlı üyeden alıntı: mesajı görüntüle
    Neden bindParam kullanmak istemiyorsunuz ki? Sistemin daha güvenli olması açısından kullanılması gereken bir fonksiyon ama illa kullanmayacaksanız sizde ki gibi direkt parametre koyabilirsiniz
    hocam bindparam konusunu henüz hiç incelemedim o yüzden

    geronimos adlı üyeden alıntı: mesajı görüntüle
    http://www.erbilen.net/pdo-kullanimi/ şurayı incelerseniz bi çok kullanım türünü görürsünüz hocam
    teşekkürler hocam

    coder63 adlı üyeden alıntı: mesajı görüntüle
    Direk parametre geçirebilirsiniz fakat binParam kullanmanızı öneririm.
    Sonuçta pdo kendi içinde injection vb açıklara karşı koruma sağlıyor ve bunları sonuna kadar kullanmak gerekir.
    hocam yazdığınız kodun bindparam sız halini yapabilirmisiz mümkünse