Klassen und globale Variablen / sql error reporting [lösung]

  • Was deine err_get_last_str returned hab ich noch net so ganz geblickt :D
    Auf jedenfall bekomme ich...

    Code
    Warning: implode(): Invalid arguments passed in /var/www/USER/sys_functions.php on line 43
    
    
    
    
    1 -> No Error Message given -- Code : 00000 -- in /var/www/USER/usermanagement.php on line 242. Query: DELETE * FROM `blockedip` WHERE `id` = :id;


    PHP: 43
    return ($e=error_get_last())?FriendlyErrorType($e['type']).': '.$e['message'].' in '.$e['file'].' on line '.$e['line']:implode(', ',error_get_last());


  • Das liegt daran, dass kein Fehler/Warung ect aufgetreten ist.
    Daran hab ich garnicht gedacht :D Muss ich mal angucken ... und ändern.


    Wenn Du nen Fehler provozierst, dann läuft alles, wie es soll:

    PHP
    echo array().'<br>'; # muss einen Fehler schmeissen, weill man ein array nicht verketten kann, und auch nicht echo-en kann
    echo error_get_last_str(); # daher "findet" die func den "last" error
    
    
    
    
    // ausgabe:
    // Notice: Array to string conversion in C:\xampp\htdocs\...
    // Array
    // E_NOTICE: Array to string conversion in C:\xampp\htdocs...



    EDIT:
    Hatte nen stupiden Fehler drin :D

    PHP
    return ($e=error_get_last()) # wenn php function error_get_last() was zurückgibt 
            ?FriendlyErrorType($e['type']).': '.$e['message'].' in '.$e['file'].' on line '.$e['line'] # dann mach n friendly string draus
            :implode(', ',error_get_last() # sonst implode NULL  :D lol, fail
        );


    so isses richtig:


    edit: schon wieder schusselfehler :D

  • aber iwi deletet er den Eintrag tdz net? :0


    Ich bekomme die errormessage

    Code
    1 -> No Error Message given -- Code : 00000 -- in localhost /var/www/USER/usermanagement.php on line 242. Query: DELETE * FROM `blockedip` WHERE `id` = :id;
  • die e-mag die du bekommst reicht nicht aus.
    da steht ein code 0000, aber sonst nix.
    sieht mir danach aus, als wenn die func für die e-msgs nicht macht was sie soll.


    am besten immer die daten so nennen, wie sie genannt wurde:
    SQLSTATE(...)
    Driver code -- der wird hier wohl 0000 sein
    Driver msg


    mach mal ein
    print_r($SQL['ipbldel']['stmt']->errorInfo()); direkt vor generate_query_ErrorMessage()

  • Ich bin so blöd X(
    Hatte das falsche stmt array in der hand..

    PHP
    generate_query_ErrorMessage($SQL/*['ipblock']*/["ipbldel"]['stmt']->errorInfo(),__LINE__,__FILE__,$SQL['ipbldel']['query']);


    Fehlermeldung

    Code
    1 -> You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM `blockedip` WHERE `id` = '1'' at line 1 -- Code : 42000 -- in localhost /var/www/USER/usermanagement.php on line 239. Query: DELETE * FROM `blockedip` WHERE `id` = :id;
  • SQL
    SELECT 
        *
    FROM
        `blockedip`
    WHERE
        `ip` = :id
    ORDER BY `until` ASC; -- sortiere bei `until` A-bsteigend


    Ich schreibe A-bsteigend, weil es ja ASC und DESC gibt.
    Und die Eselsbrücke ist dann eben
    A(bsteigend)SC
    D(as andere :D)ESC

  • Das greift bei allem, was da in der db rumlungert.
    Komisch wirds bei den verschiedenen Zeichenstandards ... bin da auch noch nicht weit, aber
    es gibt wohl verschiedenste Sortierungen bei a und ä und ss und ß ... ect.
    Aber im Normalfall braucht man das nicht. Ob der Benutzer mit ä "Erster" ist oder der mit a ... :D
    Kann mir aber vorstellen, dass es bei statistischen Auswertungen einer Tabelle Kopfschmerzen macht :D

  • Hier mal ein Lösungsansatz für MySQL Errorhandling mit PDO
    datei.php


    sys_functions.php



    Gibt aus:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!