[SAMMELTHREAD] Kleine Coding Fragen

  • will es mit einem Query lösen

    Wenn du es so machst, wie ich es beschrieben habe, dann löst du es doch mit einem Query.


    Deine Art ist nicht nur ein Query, sondern mehrere Sub-Querys, welche doch jeweils wieder als eigenständiges Query interpretiert werden.


    Somit ist die Methode die ich vorschlage wesentlich performanter und besser für den Server ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wenn du es so machst, wie ich es beschrieben habe, dann löst du es doch mit einem Query.
    Deine Art ist nicht nur ein Query, sondern mehrere Sub-Querys, welche doch jeweils wieder als eigenständiges Query interpretiert werden.


    Somit ist die Methode die ich vorschlage wesentlich performanter und besser für den Server ^^

    Oh sorry, hab es nicht richtig gelesen.
    Ja, aber das ist das Problem, wie mach ich das mit einem Query?


    Oder meinst du pro Tabelle ein Query und dann mit PHP Variablen summieren?

  • Datenbankaktionen sind immer schneller als PHP Aktionen, somit ist es besser es über einen sauberen Query abzubilden statt über ein PHP Script...

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Ja, eben, das habe ich mir auch gedacht.
    Aber ich weiß eben nicht wie ich das jetzt machen soll, damit ich ein Ergebnis bekomme.


    //edit:
    Ich hab das jetzt so gelöst, so funktioniert es.
    Hat irgendwer eine bessere Lösungsmöglichkeit? :)


    5 Mal editiert, zuletzt von CrueL ()

  • Hatte ich bereits geschrieben. Per SQL JOINs am besten.

    Kein Plan wie ich das mache, JOINs verwirren mich.



    //Edit NEUE FRAGE:

    PHP
    try {
      $query = $connect->prepare("UPDATE inbox SET read = 1 WHERE id = :id");
      $query->execute(array('id' => (int)$_GET['read']));
    }
    catch(PDOException $e){
      print "Error: " . $e->getMessage();
    }

    Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'read = 1 WHERE id = '1'' at line 1



    Was ist hier falsch?


    //Edit: Gelöst...musste backticks(`) verwenden....

    2 Mal editiert, zuletzt von CrueL ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hey,
    hab ein Problem mit meinem PDO Login System.
    Er zeigt mir immer an das ich die falschen Login Daten angebe.
    Vielleicht findet ihr ja was ich bin am verzweifeln.



    Die Session wird in der config.php für die Index.php gestartet.
    @Kaliber ?

  • Brauchst mich nicht nochmal extra anstupsen, aber süß von dir xD


    Also als erstes kann ich dir nur empfehlen require_once zu verwenden, anstatt include.


    So und ja mit dem Passwort, das sollte eigentlich leicht zu klären sein.


    Debugge einfach mal und lass dir ausgeben, wie das Passwort, welches du eingibst in SHA512 aussieht und ob es identisch ist mit dem in der Datenbank.


    Wenn es identisch ist, liegt der Fehler in der PDO Abfrage, sind sie nicht identisch liegt der Fehler eventuell beim Hashing oder generell verwendest du 2 unterschiedliche Passwörter ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @Kaliber hast du mal ne Begründung warum man require_once nehmen sollte und nicht include? (man will sich ja auch fortbilden).



    Also der Fehler liegt denke ich mal in der Datei "userClass.php"


    es kommt nämlich auf der index.php

    PHP: index.php
    $uid = 0

    an. Habe die Query überprüft und auch nen kleinen Fehler gefunden. Dennoch wurde es nicht besser.
    Der Fehler war, das ich das gehashte Passwort in Klammern setzen musste, da sonst ein Syntax Error kam. Ich habe das geändert, doch es bleibt alles so wie es ist.

  • hast du mal ne Begründung warum man require_once nehmen sollte und nicht include?

    Naja, sonst kann es passieren, dass du mehr als 1x eine Datei inkludierst. Und dann kann es zu echt dummen Fehlern kommen.



    Also der Fehler liegt denke ich mal in der Datei "userClass.php"

    Lass dir doch mal das Passwort ausgeben, damit du dir sicher sein kannst :D


    Versuch es an dein Hauptskript zurück zu geben und nutze print_r oder echo und lass dir beide Passwörter (das was er in der Datenbank findet & das was du eingibst) mal ausgeben und dann vergleiche ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe gerade verglichen (mit meiner Freundin zusammen)
    Die Werte sind Identisch.


    PHP
    f1b430bf72380800c1acbeeb319802ab5bb90a6efb1ea882a978cf5bdd34b6a7c16da49245767a0101e3ece165016469e937d70bdb1dd0b00a89f9abd5f1d691 
    f1b430bf72380800c1acbeeb319802ab5bb90a6efb1ea882a978cf5bdd34b6a7c16da49245767a0101e3ece165016469e937d70bdb1dd0b00a89f9abd5f1d691

    Oben ist der Datenbank-Wert.

  • Okay, dann liegt der Fehler in deiner PDO Abfrage, schreib diese mal so:


    PHP
    $stmt = $db->prepare("SELECT `user_id` FROM `users` WHERE `user_name`=:txt_username AND `user_pass`=:hashed_password"); 
    $stmt->bindParam(":txt_username", $txt_username,PDO::PARAM_STR);
    $stmt->bindParam(":hashed_password", $hash_password,PDO::PARAM_STR);

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Okay, dann liegt der Fehler in deiner PDO Abfrage, schreib diese mal so:


    PHP
    $stmt = $db->prepare("SELECT `user_id` FROM `users` WHERE `user_name`=:txt_username AND `user_pass`=:hashed_password"); 
    $stmt->bindParam("txt_username", $txt_username,PDO::PARAM_STR);
    $stmt->bindParam("hashed_password", $hash_password,PDO::PARAM_STR);

    Jetzt habe ich einen völlig anderen Wert in der Eingabe.


    Code
    f1b430bf72380800c1acbeeb319802ab5bb90a6efb1ea882a978cf5bdd34b6a7c16da49245767a0101e3ece165016469e937d70bdb1dd0b00a89f9abd5f1d691 
    cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

    Hast du dafür eine Erklärung?