• 27-12-2014, 10:45:22
    #1
    Bir kullanıcının veritabanına yaptığı kaydı akabinde seçmek istiyorum. Bir öneride bulunabilecek var mı verimli çalışacak yol. Kayıdı oluştururken rasgele sayı oluşturup kaydedip bu sayıdan yakalamaya çalışıyordum fakat pek verimli olmuyor bu.
  • 27-12-2014, 12:12:37
    #2
    REeL13 adlı üyeden alıntı: mesajı görüntüle
    Bir kullanıcının veritabanına yaptığı kaydı akabinde seçmek istiyorum. Bir öneride bulunabilecek var mı verimli çalışacak yol. Kayıdı oluştururken rasgele sayı oluşturup kaydedip bu sayıdan yakalamaya çalışıyordum fakat pek verimli olmuyor bu.
    Hocam eğer isteğiniz şeyi yanlış anlamadıysam şöyle bir çözüm yolu önerebilirim;

    Her kayıt için ID adında bir nitelik olsun. Yapılan her kayıt veritabanına kayıt edilirken, veritabanının her kayıt için auto_increment olarak o kayda, bir ID atamasını sağla. Daha sonra ise, yapılan o kaydın ID bilgisini alarak, o kaydı seçmek bir çözüm yolu olabilir. ID adlı niteliği aynı zamanda primary_key yapın. Böylece o kayıt, diğer kayıtlardan da tamamen farklı bir ID numarasına sahip olacağı için daha sağlıklı bir çözüm yolu olacaktır. Yani veritabanının atadığı ID ile direkt olarak ilgili kaydı seçebileceksiniz.
  • 27-12-2014, 13:32:19
    #3
    pcmania adlı üyeden alıntı: mesajı görüntüle
    Hocam eğer isteğiniz şeyi yanlış anlamadıysam şöyle bir çözüm yolu önerebilirim;

    Her kayıt için ID adında bir nitelik olsun. Yapılan her kayıt veritabanına kayıt edilirken, veritabanının her kayıt için auto_increment olarak o kayda, bir ID atamasını sağla. Daha sonra ise, yapılan o kaydın ID bilgisini alarak, o kaydı seçmek bir çözüm yolu olabilir. ID adlı niteliği aynı zamanda primary_key yapın. Böylece o kayıt, diğer kayıtlardan da tamamen farklı bir ID numarasına sahip olacağı için daha sağlıklı bir çözüm yolu olacaktır. Yani veritabanının atadığı ID ile direkt olarak ilgili kaydı seçebileceksiniz.
    Evet haklısın id gibi bağımsız değer üretilen bir alan var fakat bu kayıt girerken otomatik oluşuyor öncesinde bilgimiz yok hangi id olacağına dair. O yüzden direk id si ile nasıl seçeceğiz kayıttan sonra.
  • 27-12-2014, 13:44:31
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    İnser işleminden sonra Eklenen Kaydın ID numaraını almak için
    mysql için mysql_insert_id()
    mysqli için $mysqli->insert_id
    Komutları Kullanılmaktadır
  • 27-12-2014, 14:14:19
    #5
    REeL13 adlı üyeden alıntı: mesajı görüntüle
    Evet haklısın id gibi bağımsız değer üretilen bir alan var fakat bu kayıt girerken otomatik oluşuyor öncesinde bilgimiz yok hangi id olacağına dair. O yüzden direk id si ile nasıl seçeceğiz kayıttan sonra.
    Hocam o zaman benim dediğim yerden yola çıkalım. Yani "0" dan başlamış ve her yeni kayıt girildiğinde "auto_increment" sayesinde ID +1 artıyor diyelim.

    İlk kayıt girildi. ID : 1 oldu
    Ikıcı kayıt girildi. ID : 2 oldu
    .
    .
    .
    .
    .

    vs. şeklinde yeni her kayıtta ID otomatik olarak 1 artarak, yeni eklenen kayda ID olarak atanarak gidiyor. Bayağı bir kayıt girildi diyelim ve son girilen kaydın ID bilgisi için veritabanı örneğin : 30 oldu diyelim. Ama biz bunu bilmiyoruz. Sizin de dediğiniz gibi.

    O halde şöyle bir MySQL sorgusu yapılabilir :

    $kayıtBilgi = mysql_query("SELECT id FROM tablo_adi ORDER BY id DESC LIMIT 0, 1");
    Normal şartlarda ID, her kayıt girildiğinde artan bir şekilde gidiyordu. Bu koddaki ORDER BY DESC ile tablo ID'lerini tersten dizdik. Mesela ID=30 sonuncu kayıt ise, ilk kayıt olmuş olacak. Daha sonra ise, LIMIT 0,1 yaptık. Yani veritabanına "tablonun en üstündeki kaydın, ID'sini ver" demiş olduk. En üstteki ID=30 olacağı için, aslında biz son girilen kaydın ID bilgisini almış olduk.

    Sonrasında ise zaten bu $kayıtBilgi ifadesini fetch ile $sonGirilenKayitID değişkenine atıyoruz.

    $sonGirilenKayitID = mysql_fetch_assoc($kayıtBilgi); //mysql_fetch_array($kayıtBilgi); şeklinde de deneyebilirsiniz eğer assoc ile olmazsa.
    echo $sonGirilenKayitID["id"]; //tablodaki ID sutunun adının 'id' olduğunu varsaydım.
    $sonGirilenKayitID değişkeni; 30 olmuş oldu. Böylece son kaydın ID bilgisini almış olduk.
  • 27-12-2014, 14:38:44
    #6
    pcmania adlı üyeden alıntı: mesajı görüntüle
    Hocam o zaman benim dediğim yerden yola çıkalım. Yani "0" dan başlamış ve her yeni kayıt girildiğinde "auto_increment" sayesinde ID +1 artıyor diyelim.

    İlk kayıt girildi. ID : 1 oldu
    Ikıcı kayıt girildi. ID : 2 oldu
    .
    .
    .
    .
    .

    vs. şeklinde yeni her kayıtta ID otomatik olarak 1 artarak, yeni eklenen kayda ID olarak atanarak gidiyor. Bayağı bir kayıt girildi diyelim ve son girilen kaydın ID bilgisi için veritabanı örneğin : 30 oldu diyelim. Ama biz bunu bilmiyoruz. Sizin de dediğiniz gibi.

    O halde şöyle bir MySQL sorgusu yapılabilir :

    $kayıtBilgi = mysql_query("SELECT id FROM tablo_adi ORDER BY id DESC LIMIT 0, 1");
    Normal şartlarda ID, her kayıt girildiğinde artan bir şekilde gidiyordu. Bu koddaki ORDER BY DESC ile tablo ID'lerini tersten dizdik. Mesela ID=30 sonuncu kayıt ise, ilk kayıt olmuş olacak. Daha sonra ise, LIMIT 0,1 yaptık. Yani veritabanına "tablonun en üstündeki kaydın, ID'sini ver" demiş olduk. En üstteki ID=30 olacağı için, aslında biz son girilen kaydın ID bilgisini almış olduk.

    Sonrasında ise zaten bu $kayıtBilgi ifadesini fetch ile $sonGirilenKayitID değişkenine atıyoruz.

    $sonGirilenKayitID = mysql_fetch_assoc($kayıtBilgi); //mysql_fetch_array($kayıtBilgi); şeklinde de deneyebilirsiniz eğer assoc ile olmazsa.
    echo $sonGirilenKayitID["id"]; //tablodaki ID sutunun adının 'id' olduğunu varsaydım.
    $sonGirilenKayitID değişkeni; 30 olmuş oldu. Böylece son kaydın ID bilgisini almış olduk.
    Hocam son kaydın id sini seçmeyi izah etmişsiniz evet bunda sorun yok ama bu kodun pratikde hata yapma ihtimali var. Çünkü sisteme bir çok kullanıcı kayıt girdiği için kod okumada sunucuda bir süreç olduğu için pratik de yanlışlık yapma olasılığı var.

    MehmetCAKIR adlı üyeden alıntı: mesajı görüntüle
    İnser işleminden sonra Eklenen Kaydın ID numaraını almak için
    mysql için mysql_insert_id()
    mysqli için $mysqli->insert_id
    Komutları Kullanılmaktadır
    Bu fonksiyon araştırıyorum hocam.
  • 27-12-2014, 15:07:31
    #7
    insert id ile son bu bağlantıdan yapılan kaydın id si seçilir tüm kullanıcılardan gelen değil ama siz illa başka yol derseniz ek bi alan oluşturun tarihsel ve random bi sayı ile birlikte insert esnasında kaydedin sonrada bu kaydı seçin işinizi gorecektir
  • 28-12-2014, 11:43:38
    #8
    ylv
    Üyeliği durduruldu
    REeL13 adlı üyeden alıntı: mesajı görüntüle
    Hocam son kaydın id sini seçmeyi izah etmişsiniz evet bunda sorun yok ama bu kodun pratikde hata yapma ihtimali var. Çünkü sisteme bir çok kullanıcı kayıt girdiği için kod okumada sunucuda bir süreç olduğu için pratik de yanlışlık yapma olasılığı var.



    Bu fonksiyon araştırıyorum hocam.
    son kayıt id sini alıp veritabanında işlemlere devam edecekseniz trigger kullanıcaksınız. php ile başka işler yapıcaksanız insert sorgunuzdan sonra yerleşik fonk. veya yeni bir sql sorgusu ile son eklenen id'yi almanız mümkün.

    iyi çalışmalar
  • 28-12-2014, 13:07:54
    #9
    Üyeliği durduruldu
    http://www.pontikis.net/blog/how-and...ble-mysql-logs

    inceleyin bunu işinizi görecektir.

    my.cnf dosyasında gerekli logları aktif ettiğinizde hataları, sorguları ve benzeri durumların loglarını bir dosyada tutabilirsiniz. bunları çektiğinizde tarihli bir şekilde kaydedildiğini sanıyorum. ona göre işlemler yapabilirsiniz.

    Yada mysql_query fonksiyonu oluşturup her queryde birde loga yollamalısınız bu biraz riskli gibi 1. seçenek daha olumlu

    NOT : konu başlığını çok yanlış açıyorsunuz Bende robot gibi cevap veriyorum okumadan. K.bakma mysql_insert_id en son yapılan sql id auto numeric ise verir. yada order by id desc limit 0,1 diyerek son id almış oluyorsunuz