• 06-11-2019, 23:46:27
    #1
    Merhaba şöyle bir SQL kodum var


    INSERT INTO books (title, description) values ('$title', '$description');
    INSERT INTO books_authors (bid, aid) values ('LAST_INSERT_ID()', '$author');

    verileri insert ettiriyorum anca last insert ıd yi buaraya nasıl alıcam ve 3 lü tablo kullanıcam buraya 1 tablo daha inser ekliycem nasıl yapabilirim?
  • 06-11-2019, 23:48:32
    #2
    Bu kod sorunsuz çalışmıyor mu?
  • 06-11-2019, 23:50:12
    #3
    bu koda sadece son books a insert ettiğim id yi almıyor çalışıyor ama değeri 0 olarak gönderiyor @Risque;
  • 06-11-2019, 23:55:44
    #4
    Değişken tanımlayın. Sonra da o değişkeni insert edin.
    SET @last:=LAST_INSERT_ID();
    gibi belki işe yarar
  • 07-11-2019, 00:01:26
    #5
    tam yazıyodum cevabı teşekkürler yine de @tork;

    Çözüm dediğin gibi ;

    INSERT INTO books (title, description) values ('$title', '$description');
    SET @last_id_in_books = LAST_INSERT_ID();
    INSERT INTO books_authors (bid, aid) values (@last_id_in_books, '$author');
    INSERT INTO books_types (bid, tid) values (@last_id_in_books, '$type');
  • 07-11-2019, 00:34:34
    #6
    INSERT INTO books (title, description) values ('$title', '$description');
    INSERT INTO books_authors (bid, aid) values (LAST_INSERT_ID(), '$author');
    LAST_INSERT_ID fonksiyonunu tırnak içine almışsın. Bu şekilde sayısal değeri 0 verilir. Bu yüzden tırnakları silmen lazım.

    ek olarak aşağıdaki gibi de kullanabilirsin.

    INSERT INTO books (title, description) values ('$title', '$description');
    INSERT INTO books_authors (bid, aid) values ((SELECT <book_id> FROM books ORDER BY <book_id>DESC LIMIT 1), '$author');
  • 07-11-2019, 00:51:55
    #7
    @BestCoder; @tork; peki bunu update olarak yapmak istersem nasıl bir yol izlemeliyim ? join mantığında yapılıyor sanırım ancak değerleri(stringleri) nasıl şekillendireceğimi bulamadım
  • 07-11-2019, 14:21:25
    #8
    emirkrgz adlı üyeden alıntı: mesajı görüntüle
    @BestCoder; @tork; peki bunu update olarak yapmak istersem nasıl bir yol izlemeliyim ? join mantığında yapılıyor sanırım ancak değerleri(stringleri) nasıl şekillendireceğimi bulamadım
    UPDATE içinde mantık aynı. Sadece değer olarak vereceğin yere LAST_INSERTED_ID() veya benim verdiğim SQL kodunu parantez içinde yazmalısın. (UPDATE komutunun nasıl çalıştığını bildiğini kabul ediyorum).

    Birde, arka arkaya 2 defa LAST_INSERTED_ID fonksiyonunu insert ile kullanırsan, her seferinde değerler farklı gelir. Aynı tabloya insert edersen, ardışık, farklı tablolara insert edersende o tablodaki son eklenen id değerini alırsın. Eğer her yerde ilk eklenen ID yi kullanmak istiyorsan, @tork söylediği gibi, önce değişkene aktarıp sonra kullanman gerek.