• 24-12-2022, 17:16:13
    #1
    Arkadaşlar aşağıdaki koda
    sprintf(mQUERY, "INSERT INTO `giftinfonew` (`uID`) VALUES ('%s')", mUSER[UserIndex].uID);
    eklemeye çalışıyorum. Databaseye aynı uID yok ise yazmasını istiyorum.
    ilk sorguda yazıyor ama sonrasındaki sorgularda aynı uID olduğu için hataya düşüyor.

    sprintf(mQUERY, "INSERT INTO `giftinfonew` (`uID`) VALUES ('%s')", mUSER[UserIndex].uID); kodunu sadece giftinfonew databasesinde yoksa yazmasını istiyorum. Örnek kod atar mısınız çok acil

    BOOL MyDB::DB_PROCESS_21(int UserIndex, int tGiftInfo[10][2])
    {
        sprintf(mQUERY, "select gNumber01,gNumber02,gNumber03,gNumber04,gNumber05,gNumber06,gNumber07,gNumber08,gNumber09,gNumber10 from giftinfonew where uID='%s'", mUSER[UserIndex].uID);
        
    
        sprintf(mQUERY, "INSERT INTO `giftinfonew` (`uID`) VALUES ('%s')", mUSER[UserIndex].uID);
    
        if (!RECONNECT_TO_DATABASE02())
        {
            return FALSE;
        }
    
        if (mDB02.exec_query(mQUERY) < 0)
        {
            return FALSE;
        }
    
    
        MYSQL_RES* res = mDB02.get_res();
    
        if (res == NULL)
        {
            __LogMgr()->Log("!Query failed - (%s).\n", mQUERY);
            __LogMgr()->Log("\t\t\tWhy - %s\n", mDB02.get_error_msg().c_str());
            return FALSE;
        }
    
        MYSQL_ROW row;
        int iCount = 0;
    
        while ((row = mysql_fetch_row(res)))
        {
            for (int i = 0; i < (int)res->field_count; i++)
            {
                tGiftInfo[i][0] = row[i] ? atol(row[i]) : 0;
            }
    
            iCount++;
        }
    
        mDB02.clear_res();
    
        if (iCount != 1)
        {
            return FALSE;
        }
    
        return TRUE;
    }
  • 24-12-2022, 17:31:44
    #2
    Her sorgu inserti attığınızda last id alın sonuna +1 ekletin ya da uID değerini primary key yapın otomatik atasın
  • 24-12-2022, 17:32:13
    #3
    Sosyal Medya Uzmanı
    BOOL MyDB: :B_PROCESS_21(int UserIndex, int tGiftInfo[10][2])
    {
    // Kullanıcının verilerini okumaya çalışalım
    sprintf(mQUERY, "SELECT * FROM giftinfonew WHERE uID = '%s'", mUSER[UserIndex].uID);
    if (!RECONNECT_TO_DATABASE02())
    {
    return FALSE;
    }
    if (mDB02.exec_query(mQUERY) < 0)
    {
    return FALSE;
    }

    // Sonuçları alalım
    MYSQL_RES* res = mDB02.get_res();
    if (res == NULL)
    {
    __LogMgr()->Log("!Query failed - (%s).n", mQUERY);
    __LogMgr()->Log("tttWhy - %sn", mDB02.get_error_msg().c_str());
    return FALSE;
    }

    // Eğer satır varsa, verileri tGiftInfo dizisine atalım
    MYSQL_ROW row;
    int iCount = 0;
    while ((row = mysql_fetch_row(res)))
    {
    for (int i = 0; i < (int)res->field_count; i++)
    {
    tGiftInfo[i][0] = row[i] ? atol(row[i]) : 0;
    }
    iCount++;
    }

    // Sonuçları temizleyelim
    mDB02.clear_res();

    // Eğer satır yoksa,
  • 24-12-2022, 17:33:59
    #4
    Sosyal Medya Uzmanı
    Bu fonksiyon, verilen kullanıcının giftinfonew tablosundaki verilerini okumaya çalışıyor ve eğer veri yoksa yeni bir satır eklemeyi deneyen bir fonksiyon gibi görünüyor. Önerim, verilen kullanıcının uID değerine sahip bir satırın varlığını öncelikle kontrol etmek olacaktır. Bu kontrol işlemini yapmak için aşağıdaki gibi bir sorgu kullanılabilir:

    SELECT * FROM giftinfonew WHERE uID = '%s'

    Bu sorgu, verilen uID değerine sahip bir satırın varlığını kontrol eder. Eğer satır varsa, döngü içinde iCount değişkenine bir değer atanacak ve döngüden çıkılacaktır. Eğer satır yoksa, iCount değişkenine değer atanmayacak ve INSERT sorgusu çalıştırılacaktır.

    cncresul adlı üyeden alıntı: mesajı görüntüle
    BOOL MyDB: :B_PROCESS_21(int UserIndex, int tGiftInfo[10][2])
    {
    // Kullanıcının verilerini okumaya çalışalım
    sprintf(mQUERY, "SELECT * FROM giftinfonew WHERE uID = '%s'", mUSER[UserIndex].uID);
    if (!RECONNECT_TO_DATABASE02())
    {
    return FALSE;
    }
    if (mDB02.exec_query(mQUERY) < 0)
    {
    return FALSE;
    }

    // Sonuçları alalım
    MYSQL_RES* res = mDB02.get_res();
    if (res == NULL)
    {
    __LogMgr()->Log("!Query failed - (%s).n", mQUERY);
    __LogMgr()->Log("tttWhy - %sn", mDB02.get_error_msg().c_str());
    return FALSE;
    }

    // Eğer satır varsa, verileri tGiftInfo dizisine atalım
    MYSQL_ROW row;
    int iCount = 0;
    while ((row = mysql_fetch_row(res)))
    {
    for (int i = 0; i < (int)res->field_count; i++)
    {
    tGiftInfo[i][0] = row[i] ? atol(row[i]) : 0;
    }
    iCount++;
    }

    // Sonuçları temizleyelim
    mDB02.clear_res();

    // Eğer satır yoksa,