[SQL/PHP] Statt +x wird +x*5 ausgeführt (Profis gefragt)

  • Hey Community,


    ich habe seit etwa 2h ein lustigen Fehler (ist ja sonst langweilig wenn man keine Fehler hat). :thumbup:
    Ich führe ein sehr einfachen SQL Befehl aus, jeder sollte eigentlich wissen was dieser macht:

    Zitat

    UPDATE accounts SET caselevel = caselevel + 1 WHERE ID = 1;

    Für die, die es nicht wissen: In diesem Fall sollten die Einträge mit dem Wert "1" von der Spalte "ID" den Wert in der Spalte "caselevel" um "1" hochgezählt werden.
    Das ist aber in meinem Fall nicht... :?:
    Es wird nicht um +1 erhöht, sondern um +(1*5) also um +5.
    Dann probieren wir mal +2... Ups es wird um +10 hochgezählt, ok +3... hm auf einmal sind es +15, also x * 5. (blödes PHP & SQL... :wacko: )
    Ok, habe den Befehl über die Konsole probiert und was passiert?
    Es wird +x addiert, also Befehl macht eigentlich keine Probleme. :huh:
    Nun hab ich eine normale PHP Datei erstellt mit einer einfachen Verbindung.


    PHP
    $link = mysqli_connect('localhost', 'root', 'test', 'cases');mysqli_query($link, 'UPDATE accounts SET caselevel = caselevel + 1 WHERE ID = 1;');mysqli_close($link);


    Und siehe da... es funktioniert auch hier wieder problemlos, mit dem identisch gleichen SQL Befehl. ?(
    Dann hatte ich eine neue Idee. :!:
    Ich dachte mir es könnte ja an meine Klasse liegen, also alle SQL Befehle abgefangen und geloggt und es kam folgendes dabei raus:


    SQL
    SET NAMES "utf8";SELECT * FROM accounts WHERE ID = 1;UPDATE accounts SET caselevel = caselevel + 1 WHERE ID = 1;


    Nur 2 bzw. 3 SQL Befehle und der Befehl der eigentlich keine Probleme machen soll ist mit dabei, aber komplett unverändert. :S
    Also man sieht nirgends wird der Wert zusätzlich hochgezählt...
    Und so weit kam ich bisher mit diesem tollen Fehler. :evil:



    Hätte eventuell jemand eine Idee wie man diesen Fehler lösen könnte oder was überhaupt dieser Auslöser dafür ist,
    mir gehen langsam die Idee aus diesen blöden Fehler zu finden.
    Habe meinen MySql Server auch mal neugestartet (unwahrscheinlich dass es daran lag..) und immernoch der Fehler.
    Es hat alles super funktioniert... bis jetzt.
    Vielleicht hat ja jemand eine Idee.
    Wer mehr wissen will kann bei mir auf den TeamSpeak kommen (178.33.175.251).
    Kann auch TeamViewer Support geben, für die die es nicht ganz glauben. :P


    Danke im voraus :)

  • Beitrag von DJ Deagle ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • So ganz ohne Code kann man dir schlecht helfen theoretisch kann dein Befehl auch 5 mal ausgeführt werden.


    via

    SQL
    SHOW VARIABLES LIKE '%log_file%';


    kannst du dir ausgeben lassen wo deine mysql log befindet und mal dort reinschauen. Es wird definitiv an deinem Code liegen da wie du erwähnt hast alles ohne Probleme funktioniert , falls du dies in einer extra .php Datei mit einer einfachen Verbindung ausführst.

  • Mir ist klar dass ohne Code der Fehler nicht gefunden werden kann, aber man weiss ja nicht durch was der Fehler ausgelöst wird also kann ich auch schlecht sagen welche Datei den Fehler hat.
    Der Befehl wird definitv 1 mal ausgeführt.


    Und die Log Dateien existieren bei mir nicht :s


    Habe es auf einen 2. Webserver probiert dort ist der Fehler ebenfalls nur statt x*5 ist es dort x*9 :thumbup:


    Was ich jetzt noch rausgefunden habe ist folgendes:
    Wenn man folgende Seite aufruft wird folgende Aktion durchgeführt:


    http://domain.tld/seitenname/ => +5 / +9
    http://domain.tld/seitenname => +1 / +1
    http://domain.tld/seitenname/parameter/ => +5 / +9
    http://domain.tld/seitenname/parameter => +5 / +9


    Ist für mich jetzt etwas rätselhaft, da vorher alles wunderbar funktioniert hat und weder der Code für das Seitensystem noch die .htaccess wurden bearbeitet... :huh:

  • Nein hab ich nicht.
    Für das Seitensystem nutze ich folgendes:
    htaccess:

    Zitat


    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?page=$1 [L]


    PHP:

    PHP
    if ( isset($_GET['page']) ) {
    	$config['pages'] = explode('/', $_GET['page']);
    } else {
    	$config['pages'][0] = 'home';
    }


    Aber ich glaube nicht dass es daran liegt, da es auf anderen Seiten problemlos funktioniert und es dort keine Fehler gibt.
    Es hat kein eigentlich auch kein Sinn dass es daran liegt.

  • Ich tippe sehr darauf, dass die Klasse mehrfach erstellt wird.

    Nein sonst käme auch ein PHP Fehler oder es würde geloggt werden dass der SQL Befehl öfters ausgeführt wird, was zu 100% nicht der Fall ist.



    Überprüfe doch mit php ob .. vorhanden ist und entferne es..

    ?(



    // Edit:
    Um den Fehler etwas einzugrenzen habe ich mir die Daten nach dem Query nochmal rausgeholt.
    Kurz vor dem schließen der Verbindung von MySql habe ich mir mal die Daten rausgeholt und es wird +1 hinzugefügt....


    // Edit 2:
    Es lag an der .htaccess Datei... wieso auch immer auf allen anderen Seiten wo ich diese htaccess genutzt habe hats funktioniert nur hier will er nicht.
    Damit wäre das Problem gelöst, trotzdem danke an alle die geholfen haben.