Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP Variable innerhalb von MYSQL Abfrage benutzen....

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP Variable innerhalb von MYSQL Abfrage benutzen....

    Hallo Zusammen,

    Ja es gibt zwar schon zig Beiträge zu dem Thema, aber irgendwie scheint alles nicht zu funktionieren... oder ich bin einfach zu doof

    Ich schreibe gerade an einem kleinem Modul welches mittels PHP eine XML Datei ausgibt/ausgeben soll....

    Ich habe dort ein Limit für die anzuzeigenden Nodes in einer SQL Abfrage vergeben

    PHP-Code:
    $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable ORDER BY date_add DESC LIMIT 10'
    Ich habe folgendes Probiert.....

    PHP-Code:
    $limit=10;
    $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable ORDER BY date_add DESC LIMIT $limit'
    PHP-Code:
    $limit=10;
    $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable ORDER BY date_add DESC LIMIT ("'.$limit.'")'
    PHP-Code:
    $limit=10;
    $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable ORDER BY date_add DESC LIMIT "'.$limit.'"'
    Aber irgendwie will es nicht wie es soll ...ich bekomme immer eine leere Xml

    Evtl. hat ja wer lust mir mit dem großen dicken Zaunpfahl eine drüberzuziehen.....

    Das einzige was funktioniert ist die 1. Abfrage, aber so möchte ich das nicht...da ich das Limit hinterher gern per URL Parameter regeln möchte...

    Danke für jede Hilfe...

  • #2
    ok Sorry

    habe gleich beide Probleme gelöst bekommen...

    nachdem ich es einfach so probiert habe
    PHP-Code:
    $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable ORDER BY date_add DESC LIMIT '.$_GET["limit"].' '
    dann kann man das Limit einfach per URL Parameter (z.B: ?limit=10) selbst bestimmen

    Gruß

    Kommentar


    • #3
      Verwendest du mysql_* oder mysqli_* oder PDO ?

      Denn was du da als SQL auf die Datenbank los lässt kann durchaus nach hinten losgehen. Insbesondere wenn du ein URL Parameter ungeprüft in deine SQL einbaust und keine Vorkehrungen gegen SQL Injection getroffen hast.

      Kommentar


      • #4
        Zitat von yolophp Beitrag anzeigen
        nachdem ich es einfach so probiert habe
        PHP-Code:
        $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable ORDER BY date_add DESC LIMIT '.$_GET["limit"].' '
        Wofür soll das Leerzeichen am Query-Ende gut sein? Und zu deinen Versuchen oben: schau dir einfach mal an wie der erzeugte Query aussieht, Tipp: innerhalb von einfachen Anführungszeichen werden Variablen nicht erkannt, außerdem ist es immer hilfreich MySQL bei Problemen nach einer Fehlermeldung zu fragen.

        Kommentar


        • #5
          Zitat von TessaKavanagh Beitrag anzeigen
          Verwendest du mysql_* oder mysqli_* oder PDO ?

          Denn was du da als SQL auf die Datenbank los lässt kann durchaus nach hinten losgehen. Insbesondere wenn du ein URL Parameter ungeprüft in deine SQL einbaust und keine Vorkehrungen gegen SQL Injection getroffen hast.
          Danke für deine Antwort,
          Das kann ich leider nicht genau sagen, bin dafür noch zu Anfänger..... ich glaube das Sternchen wird irgendwo im Shopsystem (Presta) umgewandelt leider weiss ich nicht genau wo....

          Aktuell sieht die Hauptanfrage so aus...

          PHP-Code:
          $myvariable 'SELECT * FROM ' _DB_PREFIX_ 'mytable2 WHERE mytable1 = '.$_GET["state"].' ORDER BY date_add DESC LIMIT '.$_GET["limit"].'';} 
          SQL Injection sagt mir schon was aber wie genau man eine abfrage dagegen absichern kann, damit habe ich mich leider noch nie so befasst....

          Ich habe einen weiteren url parameter Namens pass erstellt, dieser wird vor der 1. If abfarge mit einer Variable in der PHP datei abgeglichen..... wenn dieser parameter nicht in der url existiert, oder man ihn weglässt oder das passwort falsch eingibt wird in der xml nichts ausgegeben...meinst du das????

          Bin froh das das überhaupt einigermaßen klappt was ich mir da zurecht gefummelt habe

          Ich Frage auch jede der insgesamt 17 Tabellen einzeln ab obwohl das eigentlich auch nicht ganz richtig ist, (normalerweise selektiert man ja nur die spalten die man wirklich braucht) aber mir hilft es ein bisschen den Überblick zu behalten...., und das mein aktuelles Script dadurch langsam ist kann ich auch nicht sagen, es lädt sauschnell...

          Kommentar


          • #6
            Zitat von tk1234 Beitrag anzeigen
            Wofür soll das Leerzeichen am Query-Ende gut sein? Und zu deinen Versuchen oben: schau dir einfach mal an wie der erzeugte Query aussieht, Tipp: innerhalb von einfachen Anführungszeichen werden Variablen nicht erkannt, außerdem ist es immer hilfreich MySQL bei Problemen nach einer Fehlermeldung zu fragen.
            Ja das Leerzeichen war natürlich ein Fehler ich war dort was am basteln und hatte es vergessen rauszunehmen

            Danke für den Tip

            Kommentar


            • #7
              SQL Injection sagt mir schon was aber wie genau man eine abfrage dagegen absichern kann, damit habe ich mich leider noch nie so befasst....
              Dann hol das dringend nach oder frage jemand der sich auskennt bzw. das System kennt. Sonst kann man dir nämlich ziemlich einfach von außen über deine query deine DB löschen/manipulieren etc.. http://php-de.github.io/jumpto/sql-injection/
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar

              Lädt...
              X