Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Abfrage funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Abfrage funktioniert nicht

    Liebe Community,

    ich möchte die Anzahl an nicht gelesenen Nachrichten anzeigen. Gelöst habe ich das einmal so:

    PHP-Code:
    $stmt $dbObject_count->prepare('SELECT COUNT(*) FROM empfangenenachrichten WHERE username="$username" AND gelesen="Nicht gelesen"'); 
    Jedoch zeigt er mir, was auch immer ich mache die Zahl 0 an, obwohl gerade eine Nachricht offen ist.


    Mache ich etwas bei der MySQL-Abfrage falsch?


    Lg mmoerth


  • #2
    Jaja nutzt prepared statments und alles wird gut... Syntaktisch ist die SQL Abfrage korrket, dein Problem ist PHP.

    Wenn du echo 'foo $bar'; schreibst, wird auch "foo $bar" ausgegeben. Wenn du echo "foo $bar"; schreibst wird "foo der inhalt von $bar" ausgegeben. Das heißt der Query den du an die Datenbank sieht genau so aus: SELECT COUNT(*) FROM empfangenenachrichten WHERE username="$username" AND gelesen="Nicht gelesen". Wenn es keinen Nutzer gibt der $username heißt bekomst du natürlich 0 zurück. Du musst also dafür sorgen das der Name richtig übergeben wird. Das was du da machst ist aber schonmal tendenziell falsch. Wenn du etwas in ein SQL Statment übernimmst muss das escapt werden:
    PHP-Code:
    'SELECT COUNT(*) FROM empfangenenachrichten WHERE username='.$dbObject_count->qoute($username).' AND gelesen="Nicht gelesen"' 
    Das würde aber das Prepared Stamtent vollkommen ins absurde führen. Bei einem Prepared Statment werden in der Regel Platzhalter verwendet und beim ausführen gegen den Wert ersetzt.

    PHP-Code:
    $stmt $dbObject_count->prepare('SELECT COUNT(*) FROM empfangenenachrichten WHERE username=:username AND gelesen="Nicht gelesen"');

    $stmt->execute(array(':username' => $username)) 

    Kommentar


    • #3
      Ich verstehe. Danke für deine rasche Antwort. Gibt es irgendwo ein Manual oder so etwas über diese Platzhalter?
      Dann kann ich mich mal reinlesen, damit ich mich besser orientieren kann.

      Kommentar


      • #4
        guck mal hier: http://php.net/manual/de/mysqli.quic...statements.php und: http://php.net/manual/de/mysqli.prepare.php
        Nützliches:

        Kommentar

        Lädt...
        X