MySQL Bug

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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,


    ich wollte grade mein Script testen. Soweit funktioniert auch alles.
    Nur er speichert keine User, das einzige was in den logs steht ist das:


    Zitat

    [18:05:45] [ERROR] ExecuteT[()] - (error #1136) Column count doesn't match value count at row 1


    So sieht meine Datenbank aus.

    Wo ist der Fehler, bzw was bedeutet das?

  • Das Foto kann ich nicht sehen. Besser wäre es auch,wenn du das dazugehörige SQL Statement postest.


    Ich denke aber,dass du eine Spalte "count" genannt hast. Das Wort "count" ist aber eine Funktion in SQL.
    Damit es nicht als Funktion erkannt wird sondern als Spalten, müsstest du es mit ` markieren.
    zB.

    SQL
    UPDATE `tabelle` SET `count` = 1 WHERE `name` = 'Andrzejxy'
  • Goldkiller:


    Problem gefunden, liegt an:


    mysql_format(mycon,query,sizeof(query),"INSERT INTO `User` (`Name`, `Passwort`, `Punkte`,`Rank`, `Leben`, `LastLogin`) VALUES('%e','%e','%e','%e','%e','%e')",User[playerid][Username],inputtext,query);


    Aber wo ist das Problem jetzt?


    .sql:


    Code
    DROP TABLE IF EXISTS `User`;
    CREATE TABLE `User` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `Name` varchar(24) NOT NULL,
      `Passwort` varchar(32) NOT NULL,
      `Punkte` int(32) NOT NULL,
      `LastLogin` varchar(24) NOT NULL,
      `Rank` int(1) NOT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  • Im SQL Statement hast du die Spalte "Leben" , in der Tabellenstruktur aber nicht.In der Funktion mysql_format hast du 6 Platzhalter ( %e ) aber gibst nur 3 zusätzliche Parameter an.
    Einfacher fände ich es, manuell format zu nutzen für das SQL Kommando und dieses mal per print auszugeben. Dann kann man besser nachvollziehen,was im Hintergrund passiert.
    Das %e als Platzhalter macht ja auch nichts anderes,als an diesem Parameter zuvor mysql_real_escape_string durchzuführen.Austauschen sollte daher kein Problem sein.