Problem mit Auto Increment

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend,
    und zwar habe ich ein Problem mit dem Auto Increment.


    Also, nehmen wir mal an ich erstelle Ingame 3 Bushaltestellen (ID 1, ID 2, ID 3).
    Jede Bushaltestelle hat 1000 Health, ich trete auf zwei Bushaltestellen ein paar mal ein und speichere alle.
    Alles wird korrekt gespeichert, doch lösche ID 2 bleiben ja nur noch ID 1 und ID 3 übrig.
    Nun trete ich wieder auf die 2 übrig gebliebenen Bushaltestellen und möchte die Speichern, doch er speichert diese nicht korrekt bzw, gar nicht.., doch wieso?
    Erstelle ich eine weitere Bushaltestelle, fängt er bei ID 2 an, das ist richtig.


    lG

  • Poste bitte den dazugehörigen Code und am besten Beispieldaten zu dem was du beschrieben hast (Logs?).
    Ohne Code können wir dir auf jeden Fall nicht helfen. ;)


    Hallo,
    das mit den Bushaltestellen war ein Beispiel.
    Es geht um Drogenpflanzen.


    Mit folgendem Code speicher ich diese:


    new drg=1;
    while(drg<MAX_DRUGS && DrugInfo[drg][drgfraktid] != 0)
    {
    format(string, sizeof(string), "SELECT * FROM `drogenpflanzen` WHERE `pflanze` = '%d'", drg);
    self_mysql_queryEx(string);
    mysql_store_result(MySQLConnection);
    if(mysql_num_rows(MySQLConnection) == 0)
    {
    format(string, sizeof(string), "INSERT INTO `drogenpflanzen` (`pflanze`) VALUES ('%d')", drg);
    self_mysql_queryEx(string);
    }
    mysql_free_result(MySQLConnection);
    new var[526];
    format(var, sizeof var, "UPDATE `drogenpflanzen` SET `drgfraktid`='%d', `drgArt`='%d' , `drgXpos`='%f', `drgYpos`='%f', `drgZpos`='%f', `drginterior`='%d', `drgvirtualworld`='%d', `drgProduceDrugs`='%d', `drgNextDrugsIn`='%d', `drgWasserzustand`='%d' WHERE `pflanze`='%d'",
    DrugInfo[drg][drgfraktid],DrugInfo[drg][drgArt],DrugInfo[drg][drgXpos],DrugInfo[drg][drgYpos],DrugInfo[drg][drgZpos],DrugInfo[drg][drginterior],DrugInfo[drg][drgvirtualworld],DrugInfo[drg][drgProduceDrugs],DrugInfo[drg][drgNextDrugsIn],DrugInfo[drg][drgWasserzustand],drg);
    self_mysql_queryEx(var);
    drg++;
    }


    In den MySQL Logs ist alles korrekt.

  • Kannst du mal den MySQL Debug Modus einschalten (sodass alles geprintet wird)?
    Dann gehst du genau dein Beispiel durch und postest dazu den Log, darin markierst du, wann du was gemacht hast.


    An dem Code den du gepostet hast ist eigentlich nichts falsch, möglicherweise liegt es am Löschen, aber ich denke anhand der Logs kommen wir dem Problem sicherlich näher.

  • Hier sind alle 3 Pflanzen Vorhanden und er speichert Sie korrekt:


    Spoiler anzeigen
    00:57:43] CMySQLHandler::Query(UPDATE `drogenpflanzen` SET `drgfraktid`='22', `drgArt`='1' , `drgXpos`='2347.262207', `drgYpos`='-1818.916137', `drgZpos`='13.546875', `drginterior`='0', `drgvirtualworld`='0', `drgProduceDrugs`='0', `drgNextDrugsIn`='1107', `drgWasserzustand`='99' WHERE `pflanze`='1') - Successfully executed.

    Spoiler anzeigen
    [00:57:43] >> mysql_query( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::Query(SELECT * FROM `drogenpflanzen` WHERE `pflanze` = '2') - Successfully executed.

    Spoiler anzeigen
    [00:57:43] >> mysql_store_result( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::StoreResult() - Result was stored.

    Spoiler anzeigen
    [00:57:43] >> mysql_num_rows( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::NumRows() - Returned 1 row(s)

    Spoiler anzeigen
    [00:57:43] >> mysql_free_result( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::FreeResult() - Result was successfully free'd.

    Spoiler anzeigen
    [00:57:43] >> mysql_query( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::Query(UPDATE `drogenpflanzen` SET `drgfraktid`='22', `drgArt`='1' , `drgXpos`='2339.425781', `drgYpos`='-1820.052246', `drgZpos`='13.546875', `drginterior`='0', `drgvirtualworld`='0', `drgProduceDrugs`='0', `drgNextDrugsIn`='1153', `drgWasserzustand`='99' WHERE `pflanze`='2') - Successfully executed.

    Spoiler anzeigen
    [00:57:43] >> mysql_query( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::Query(SELECT * FROM `drogenpflanzen` WHERE `pflanze` = '3') - Successfully executed.

    Spoiler anzeigen
    [00:57:43] >> mysql_store_result( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::StoreResult() - Result was stored.

    Spoiler anzeigen
    [00:57:43] >> mysql_num_rows( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::NumRows() - Returned 1 row(s)

    Spoiler anzeigen
    [00:57:43] >> mysql_free_result( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::FreeResult() - Result was successfully free'd.

    Spoiler anzeigen
    [00:57:43] >> mysql_query( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::Query(UPDATE `drogenpflanzen` SET `drgfraktid`='22', `drgArt`='1' , `drgXpos`='2328.600830', `drgYpos`='-1818.659423', `drgZpos`='13.546875', `drginterior`='0', `drgvirtualworld`='0', `drgProduceDrugs`='0', `drgNextDrugsIn`='1159', `drgWasserzustand`='99' WHERE `pflanze`='3') - Successfully executed.

    Spoiler anzeigen
    [00:57:43] >> mysql_query( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::Query(SELECT * FROM `blitzer` WHERE `ID` = '1') - Successfully executed.

    Spoiler anzeigen
    [00:57:43] >> mysql_store_result( Connection handle: 1 )

    Spoiler anzeigen
    [00:57:43] CMySQLHandler::StoreResult() - Result was stored.



    Hier habe ich ID 2 entfernt:


    Spoiler anzeigen
    [01:02:04] CMySQLHandler::Query(SELECT * FROM `drogenpflanzen` WHERE `pflanze` = '1') - Successfully executed.

    Spoiler anzeigen
    [01:02:04] >> mysql_store_result( Connection handle: 1 )

    Spoiler anzeigen
    [01:02:04] CMySQLHandler::StoreResult() - Result was stored.

    Spoiler anzeigen
    [01:02:04] >> mysql_num_rows( Connection handle: 1 )

    Spoiler anzeigen
    [01:02:04] CMySQLHandler::NumRows() - Returned 1 row(s)

    Spoiler anzeigen
    [01:02:04] >> mysql_free_result( Connection handle: 1 )

    Spoiler anzeigen
    [01:02:04] CMySQLHandler::FreeResult() - Result was successfully free'd.

    Spoiler anzeigen
    [01:02:04] >> mysql_query( Connection handle: 1 )

    Spoiler anzeigen
    [01:02:04] CMySQLHandler::Query(UPDATE `drogenpflanzen` SET `drgfraktid`='22', `drgArt`='1' , `drgXpos`='2347.262207', `drgYpos`='-1818.916137', `drgZpos`='13.546875', `drginterior`='0', `drgvirtualworld`='0', `drgProduceDrugs`='0', `drgNextDrugsIn`='926', `drgWasserzustand`='96' WHERE `pflanze`='1') - Successfully executed.

    Spoiler anzeigen
    [01:02:04] >> mysql_query( Connection handle: 1 )



    Er hat die ID 1 gespeichert, doch ID 3 nicht.
    Von ID 3 steht da nichts.


    Jeffry:

  • Das Problem ist die Abfrage in der while Schleife. Die wird beendet, sobald eine Pflanze nicht existiert. Es wurde zwar alles richtig gespeichert, aber nur bis zu einer Pflanze die nicht existiert.
    Gut, dass es Logs gibt. :)


    Schreibe es so:
    new drg=1;
    while(drg<MAX_DRUGS)
    {
    if(DrugInfo[drg][drgfraktid] != 0)
    {
    format(string, sizeof(string), "SELECT * FROM `drogenpflanzen` WHERE `pflanze` = '%d'", drg);
    self_mysql_queryEx(string);
    mysql_store_result(MySQLConnection);
    if(mysql_num_rows(MySQLConnection) == 0)
    {
    format(string, sizeof(string), "INSERT INTO `drogenpflanzen` (`pflanze`) VALUES ('%d')", drg);
    self_mysql_queryEx(string);
    }
    mysql_free_result(MySQLConnection);
    new var[526];
    format(var, sizeof var, "UPDATE `drogenpflanzen` SET `drgfraktid`='%d', `drgArt`='%d' , `drgXpos`='%f', `drgYpos`='%f', `drgZpos`='%f', `drginterior`='%d', `drgvirtualworld`='%d', `drgProduceDrugs`='%d', `drgNextDrugsIn`='%d', `drgWasserzustand`='%d' WHERE `pflanze`='%d'",
    DrugInfo[drg][drgfraktid],DrugInfo[drg][drgArt],DrugInfo[drg][drgXpos],DrugInfo[drg][drgYpos],DrugInfo[drg][drgZpos],DrugInfo[drg][drginterior],DrugInfo[drg][drgvirtualworld],DrugInfo[drg][drgProduceDrugs],DrugInfo[drg][drgNextDrugsIn],DrugInfo[drg][drgWasserzustand],drg);
    self_mysql_queryEx(var);
    }
    drg++;
    }