• 05-08-2021, 12:49:37
    #1
    Merhaba,

    Pdo ile bir sorgu yapmaya calısıyorum ama her defasında hata aldım.

    INSERT INTO ozellik (ozellik_vid, ozellik_baslik, ozellik_tip) SELECT 4,vozellik_baslik,vozellik_tip FROM vozellik WHERE vozellik_tip='0'


    burada selectten sonra ki olan 4 post methoduyla gonderiliyor gerisi sabit nasıl bir query yapmam lazım ?
  • 05-08-2021, 12:59:12
    #2
    Botman, Codemaster
    $insert = $db -> prepare("insert into veritabani set veri1=?, veri2=?, veri3=?");
    $insert -> execute(array($veri1, $veri2, $veri3));
    Insert işleminde where kullanılmaz, eğer güncelleme yapmak istiyorsanız;

    $update= $db -> prepare("update veritabani set veri1=?, veri2=?, veri3=? where id = ?");
    $update -> execute(array($veri1, $veri2, $veri3, $id));
  • 05-08-2021, 13:00:25
    #3
    HelixTm adlı üyeden alıntı: mesajı görüntüle
    $insert = $db -> prepare("insert into veritabani set veri1=?, veri2=?, veri3=?");
    $insert -> execute(array($veri1, $veri2, $veri3));
    hocam insert into ve select in iç içe kullanımı ile ilgili kafam karıştı sorun sadece insert into değil.

    insert into ile select birlikte kullanıldığında WHERE kullanılır.
  • 05-08-2021, 13:00:47
    #4
    Botman, Codemaster
    eruseldarine adlı üyeden alıntı: mesajı görüntüle
    hocam insert into ve select in iç içe kullanımı ile ilgili kafam karıştı sorun sadece insert into değil.
    Güncelledim.
  • 05-08-2021, 13:04:01
    #5
    bindParam ile veya execute ile verileri belirterek işlem yapman daha iyi olur. Posttan ' gibi veriler geldiği zaman sql kod dizimini bozar veya injectiona sebep olabilir
  • 05-08-2021, 13:04:21
    #6
    HelixTm adlı üyeden alıntı: mesajı görüntüle
    Güncelledim.
    hocam ben insert into kısımına hakimim insert into içerisinde select kullanarak bir db'den başka bir veriye ekleme yaptırıyorum bu nedenle select kullanıyorum ve tabi ki where kukllanıyorum.

    INSERT INTO table2 (column1, column2, column3, ...) 
    SELECT column1, column2, column3, ...
    FROM table1 WHERE condition;
  • 05-08-2021, 13:06:44
    #7
            $stmt = $db->prepare("INSERT INTO ozellik (ozellik_vid, ozellik_baslik, ozellik_tip) 
                SELECT :villa,vozellik_baslik,vozellik_tip 
                FROM vozellik 
                WHERE vozellik_tip = :tip");
            $stmt->execute(array(':villa'   => $_POST['vid'],
                ':tip'  => '0'  ));
    burada neden hata aldığımı anlamıyorum.
  • 05-08-2021, 13:09:02
    #8
    Botman, Codemaster
    eruseldarine adlı üyeden alıntı: mesajı görüntüle
    hocam ben insert into kısımına hakimim insert into içerisinde select kullanarak bir db'den başka bir veriye ekleme yaptırıyorum bu nedenle select kullanıyorum ve tabi ki where kukllanıyorum.

    INSERT INTO table2 (column1, column2, column3, ...)
    SELECT column1, column2, column3, ...
    FROM table1 WHERE condition;
    Bu şekilde yapmak yerine 2 sorguyu ayrı ayrı şekilde çalıştırmak daha basit olmaz mı?

    1. sorguda sanırım insert yapıyorsunuz.
    2. sorguda insert yaptığınız veriyi almak isiyorsunuz.

    insert ettiğiniz satırın idsini PDO'da PDO::lastinsertid() komutu ile alabilirsiniz.
  • 05-08-2021, 13:12:16
    #9
    eruseldarine adlı üyeden alıntı: mesajı görüntüle
            $stmt = $db->prepare("INSERT INTO ozellik (ozellik_vid, ozellik_baslik, ozellik_tip)
                SELECT :villa,vozellik_baslik,vozellik_tip
                FROM vozellik
                WHERE vozellik_tip = :tip");
            $stmt->execute(array(':villa'   => $_POST['vid'],
                ':tip'  => '0'  ));
    burada neden hata aldığımı anlamıyorum.
    execute sırasında ':tip' neden bu şekilde yazıyorsunuz? Bunu 'tip' olarak değiştirir misiniz iki noktayı kullanmayın villada ve tipde. Sadece execute'da kaldırın bu iki noktaları.