Ankündigung

Einklappen
Keine Ankündigung bisher.

msqli WHERE Abfrage mit Variable

Einklappen

Neue Werbung 2019

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

  • msqli WHERE Abfrage mit Variable

    Guten Tag liebe Community!
    Guten Tag liebe Community!

    Ich bin gerade dabei, php und mysql zu lernen. Habe schon einige Tutorials gelesen und Praxisbeispiele gemacht.
    So, nun nach längerer Zeit habe ich leider feststellen müssen, dass die ganzen Tutorials veraltet sind und so wie ich mir das nun beigebracht habe komplett obsolet ist.

    Naja, nun zu meinem Problem:

    Ich würde gerne Daten aus meiner Datenbank via mysqli Auslesen und in Datensatz für Datensatz anzeigen.
    Noch dazu möchte ich z.B. nur Datensätze von einer bestimmten id, welche in einer Variable gespeichert ist.

    Wie kann ich nun zeitgemäß alle Datensätze auswählen, welche die selbe id haben wie $id ?

    Und wie kann ich diese Datensätze ausgeben á la:

    $result = mysqli_query("SELECT * FROM article where ");
    while($row1 = mysqli_fetch_object($result1))
    {
    $deviceid = $row1->id;
    $device = $row1->name;
    $type = $row1->type;

    So habe ich mir beim richtigen anordnen und zusammenbasteln meiner „Datensätze“ immer am leichtesten getan.

    Nur wie gesagt, würde dies nun gerne zeitgemäß machen und finde im netz leider nichts, vor allem würde ich es gern auch verstehen!


    Hoffe ihr könnt mir weiterhelfen!

    LG

  • #2
    Also ich kann deiner Fragestellung nicht viel abgewinnen. Als zeitgemäß kann man sicherlich objektorientierte Programmierung bezeichnen, natürlich noch viel mehr. Als Anfänger solltest du dir vielleicht PDO angucken, ansonsten wenn du noch weiter gehen möchtest dann ORMs wie Doctrine .

    Mit diesen Begriffen findest du auch massenhaft Beispiele und Tutorials im Netz. Solltest du dann noch Verständnisprobleme haben, dann komm doch bitte mit einer konkreten Frage wieder.

    Kommentar


    • #3
      Zitat von sn1k Beitrag anzeigen

      $result = mysqli_query("select * from article where ");
      error.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        PHP-Code:
        $result mysqli_query (select from article where ID '$id'); 
        Ich vermute das du das mit den Variablen meinst

        Kommentar


        • #5
          Wäre auch meine Vermutung. Hast aber den ersten Parameter vergessen und die Hochkommas an den falschen stellen.
          PHP-Code:
          $result mysqli_query ($dbConnection'"select * from article where ID = $id"); 
          Sollte die $id von Usern kommen (z.B. per $_GET übergeben), nicht http://php.net/manual/de/mysqli.real-escape-string.php vergessen.
          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

          Kommentar


          • #6
            super, vielen dank, genau das habe ich gesucht!
            funktioniert alles prima, nun bin ich jedoch wieder auf ein paar probleme gestoßen.

            zum ersten:

            ich möchte einträge filtern. hierzu habe ich 2 variablen. $cat und $make.
            nun möchte ich dass ich filtern kann nach cat, make, oder eben beides.
            meine mysql abfrage sieht zurzeit wie folgt aus:

            "SELECT bla bla FROM article where (make = '$make' OR cat = '$cat') OR (make = '$make' AND cat = '$cat')"

            dies funktioniert auch recht gut, nur leider wird, wenn beide variablen gegeben sind, auch einträge ausgegeben, auf welche nur 1 der beiden variable zutrifft.
            wenn ich aus dem OR in der mitte ein AND mache, funktioniert das mit den beiden variablen zwar, jedoch wird wenn nur 1 variable gegeben ist KEIN eintrag angezeigt.

            hab nun die ganze zeit gegrübelt wie ich dies lösen kann, bin jedoch auf keinen grünen zweig gekommen und benötige nun eure hilfe.

            hoffe es ist diesmal verständlicher =

            Kommentar


            • #7
              Mach's einfach. Erstell dir die verschiedenen Queries und wähl dann entsprechend des Inputs die richtige aus.
              PHP-Code:
              $where '';
              if(isset(
              $make)){
                  
              $where ' WHERE make = ' $make;
              }
              if(isset(
              $cat) AND isset($make)){
                  
              $where ' WHERE cat = ' $cat .' OR make = ' $make;
              }
              //...
              $query 'SELECT asd FROM table' $where
              So in der Art. Drauf achten, dass du alle benötigten Fälle abdeckst, Quotes und Escapen nicht vergessen.
              [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
              [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

              Kommentar


              • #8
                ah ok, hab mir gedacht so wäre das umständlich, mit 2 variablen haltet sich das zwar noch in grenzen, wenn jetzt aber noch z.b. 2 dazukommen wirds da schon schwieriger.

                mithilfe von deinem ansatz habe ich nun ein anderes problem 1a hinbekommen, jedoch gibts noch ein kleines problem mit der abfrage.

                PHP-Code:
                $where '';
                if(isset(
                $make)){
                    
                $where ' WHERE make = ' $make;
                }
                if(isset(
                $cat)){
                    
                $where ' WHERE cat = ' $cat;
                }
                if(isset(
                $cat) AND isset($make)){
                    
                $where ' WHERE cat = ' $cat .' AND make = ' $make;
                }
                echo 
                "$where";
                $mysqli->select_db("article"); 
                $result mysqli_query($mysqli"SELECT id, cat, make, article, info, price FROM article '$where'");
                $num $result->num_rows;
                }
                    if (
                $num==0) {

                echo 
                "Für den von dir verwendeten Filter gibt es noch keine Artikeln!";
                } else { ...... 
                soweit sieht nun mein code aus.
                leider spuckt mir eine abfrage folgendes aus:

                Notice: Trying to get property of non-object in /home/.sites/337/site1252/web/tngmrkt/search.php on line 120
                Für den von dir verwendeten Filter gibt es noch keine Artikeln!

                Zeile 120 wäre folgende:
                PHP-Code:
                $num $result->num_rows
                habe die variable $where ebenfalls überprüft, die passt soweit auch :/
                ich weiß es ist sicher irgendeine dumme kleinigkeit oder i.ein syntax problem, aber ich tüftel nun seit über 30 min. und es ändert sich einfach nix.

                gruß,
                ein php lernender sn1k

                Kommentar


                • #9
                  PHP-Code:
                  echo "$where"
                  Warum die "?

                  PHP-Code:
                  .. FROM article '$where' 
                  Warum die '?

                  Wie sieht die Ausgabe aus:
                  PHP-Code:
                  echo "SELECT id, cat, make, article, info, price FROM article '$where'"
                  [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                  [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                  Kommentar


                  • #10
                    Zitat von VPh Beitrag anzeigen
                    PHP-Code:
                    echo "$where"
                    Warum die "?
                    Dumme Angewohnheit, da ich meistens nur html code mit echo ausgebe.

                    Zitat von VPh Beitrag anzeigen
                    PHP-Code:
                    .. FROM article '$where' 
                    Warum die '?
                    hab es gerade ohne ' versucht, jedoch kommt hier der gleiche fehler..

                    Zitat von VPh Beitrag anzeigen
                    Wie sieht die Ausgabe aus:
                    PHP-Code:
                    echo "SELECT id, cat, make, article, info, price FROM article '$where'"
                    SELECT id, cat, make, article, info, price FROM article WHERE cat = Interiour AND make = BMW
                    jedoch habe ich nun $where ohne den '
                    leider noch immer die fehlermeldung.
                    bin schön lagsam ratlos

                    Kommentar


                    • #11
                      cat = 'Interiour' AND make = 'BMW'

                      http://php-de.github.io/jumpto/sql/
                      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                      Kommentar


                      • #12
                        Für sowas tut man aus SQL-Injection Gründen lieber Prepared Statements nutzen.
                        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                        Kommentar


                        • #13
                          Zitat von VPh Beitrag anzeigen
                          cat = 'Interiour' AND make = 'BMW'

                          http://php-de.github.io/jumpto/sql/
                          eieieieiei...genau das wars, danke vielmals..
                          peinlich :/

                          Zitat von tr0y
                          Für sowas tut man aus SQL-Injection Gründen lieber Prepared Statements nutzen.
                          gut zu wissen, um das jedoch umsetzen zu können muss ich mich da noch ziemlich einlesen.
                          vielen dank an alle für die tolle hilfe, somit ist mein kleines übungsprojekt beinahe fertig

                          LG

                          Kommentar


                          • #14
                            Kann sein, dass ich es beim Überfliegen nur überlesen habe, entsprechende Hinweise gab es ja mehrfach, aber sicherst du deine Query-Eingaben gegen SQL-Injection ab? Ich verlinke die FAQ-Antwort noch mal, weil es immer dazugehört:

                            - http://php-de.github.io/jumpto/faq/#sql-injection

                            Kommentar

                            Lädt...
                            X