Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Suchmaschine "Parse error: syntax error, unexpected '$query' (T_VARIAB

Einklappen

Neue Werbung 2019

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

  • PHP Suchmaschine "Parse error: syntax error, unexpected '$query' (T_VARIAB

    Hallo miteinander,
    Ich versuche momentan mithilfe von PHP und MySQL eine Suchmaschine für meine Webseite zu programmieren. Anbei könnt ihr nun meine search.php sehen.

    PHP-Code:
    <?php
    require_once('connect.php');
    $keywords $_GET['search'];
    $query mysqli_query($link"SELECT * from search WHERE keywords like '%".$keywords."%' or title like '%".$keywords."%'");
    echo 
    'Ihre Suche nach <i>'.$keywords.'</i> ergab:<br/>';
      while(
    $d mysqli_fetch_assoc(mysqli_result $query)) {
            echo 
    '<fieldset><legend><a href="http://bla.com/projects/seite/'.$d['link'].'">'.$d['title'].'</a></legend>'.$d['description'].'</fieldset>';
        }
    ?>
    Mein Browser gibt mir nun bei diesem Script in der Zeile 6 einen parse error. Die $query Variable sei nicht erwartet.

    Hier die vollständige Fehlermeldung:

    Parse error: syntax error, unexpected '$query' (T_VARIABLE) in /xx/xxx/search.php on line 6

    Ich habe bereits meine connect.php mithilfe von
    PHP-Code:
    error_reporting(-1);
    ini_set('display_errors'true); 
    debuggt. Hier der Code der connect.php:
    PHP-Code:
    <?php
    $hs 
    "bla";
    $us "bla";
    $ps "bla";
    $db "bla";
    $link mysqli_connect($hs$us$ps);
    mysqli_select_db($link$db);
    ?>
    Vielen Dank im Voraus
    meh();


  • #2
    Hi,

    schau Dir bitte folgende Zeile nochmal genau an und prüf die Syntax:

    PHP-Code:
    while($d mysqli_fetch_assoc(mysqli_result $query)) { 
    Zudem solltest du den GET Parameter maskieren oder prepared statements verwenden.

    mfg wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Soll ich statt GET POST verwenden?
      meh();

      Kommentar


      • #4
        Zitat von Joma Beitrag anzeigen
        Soll ich statt GET POST verwenden?
        Das ist genau so unsicher.

        Zu deinem Problem: Wieder mal irgendwo raus kopiert ohne es zu verstehen, hm?!
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Soll ich statt GET POST verwenden?
          Nein, um Dich vor SQL Injection zu schützen, solltest Du

          ...GET Parameter maskieren oder prepared statements verwenden
          Schau Dir bitte die Beispiele hier an, dann siehst du, welchen Syntax Fehler du u.a. hast (in der betreffenden Zeile):

          http://php.net/manual/de/mysqli-result.fetch-assoc.php

          mfg Wolf29
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            @tkausl nein. wie hätte ich es debuggen können, wenn ich den code nicht verstehe. deine frage war auch nicht wirklich hilfreich
            meh();

            Kommentar


            • #7
              Ergänzung am Rande:

              PHP-Code:
              $keywords $_GET['search']; 
              Ich habe bereits meine connect.php mithilfe von
              PHP-Code:
              error_reporting(-1); 
              ini_set('display_errors'true); 
              debuggt.
              Dann solltest du bei "normalen" Aufruf der Seite auch eine Notice von PHP bekommen (falls nicht, das gehört ganz zu Beginn deinen Scritpes/Requestes), weil du gar nicht fragst ob $_GET['search'] überhaupt vorhanden ist, bevor du fragst was darin enthalten ist. Stichwort isset() oder !empty().

              Und Lesestoff zu SQL-Injection: http://php-de.github.io/jumpto/sql-injection/

              LG
              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


              • #8
                Zitat von Joma Beitrag anzeigen
                @tkausl nein. wie hätte ich es debuggen können, wenn ich den code nicht verstehe.
                Dann kannst du nicht Zählen, da du nicht selbst die Zeile 6 gefunden hast, auf die dich deine Fehlermeldung hinweist?

                Zitat von Joma Beitrag anzeigen
                deine frage war auch nicht wirklich hilfreich
                Meine Aussage davor aber hoffentlich.
                Zitat von nikosch
                Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                Kommentar


                • #9
                  Ich habe schon gewusst, dass der Fehler bei mysqli_fetch_assoc liegt. Wenn du mir nicht helfen willst kannst du mich ja einfach ignorieren
                  meh();

                  Kommentar


                  • #10
                    Zitat von Joma Beitrag anzeigen
                    Ich habe schon gewusst, dass der Fehler bei mysqli_fetch_assoc liegt.
                    Eigenltich mehr bei mysqli_result. Und warum fragst du dann hier?
                    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


                    • #11
                      Da die Variable $keywords über ein Input Feld definiert wird, habe ich nun folgendes in meinen search.php Code eingebaut:

                      PHP-Code:
                      <?php
                          
                      ...
                          
                      $keywords $_GET['search'];
                         if (isset(
                      $keywords)) {
                            ...
                         else {
                              echo 
                      'Es wurde kein Suchbegriff eingegeben.';
                             }
                          }
                      ?>
                      meh();

                      Kommentar


                      • #12
                        Ich verstehe das Problem jetzt ganz allgemein hier nicht. Ich habe noch Fehler in meinem Code, die ich soweit nicht wegkriege. Deswegen habe ich hier freundlich darum gebeten mir zu helfen.

                        mysqli_fetch_assoc() und mysqli_result() liegen doch in derselben Zeile. Außerdem liegt mysqli_result() in mysqli_fetch_assoc.
                        meh();

                        Kommentar


                        • #13
                          Zitat von Joma Beitrag anzeigen
                          Da die Variable $keywords über ein Input Feld definiert wird, habe ich nun folgendes in meinen search.php Code eingebaut:

                          PHP-Code:
                          <?php
                              
                          ...
                              
                          $keywords $_GET['search'];
                             if (isset(
                          $keywords)) {
                                ...
                             else {
                                  echo 
                          'Es wurde kein Suchbegriff eingegeben.';
                                 }
                              }
                          ?>
                          schmeißt immer noch eine NOTICE undefined Index o.Ä


                          Deinen Fehler sollte jeder einigermaßen vernünftige Editor dir rot unterstreichen... mysqli_result ist der knackpunkt....
                          Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                          Kommentar


                          • #14
                            PHP-Code:
                            $result mysqli_query(...);
                            mysqli_fetch_assoc(mysqli_result $result
                            So sieht das Beispiel auf php.net aus, entsprechend hast du auch
                            PHP-Code:
                            $query mysqli_query(...);
                            while(
                            $d mysqli_fetch_assoc(mysqli_result $query)) { 
                            gemacht. Problem ist jetzt mysqli_fetch_assoc(mysqli_result $query)
                            Das steht nur in der Dokumentation, um zu vermitteln was da als Parameter übergeben werden soll.
                            Relax, you're doing fine.
                            RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                            Kommentar


                            • #15
                              Zitat von Joma Beitrag anzeigen
                              PHP-Code:
                                 if (isset($keywords)) {
                                    ...
                                 else {
                                      echo 
                              'Es wurde kein Suchbegriff eingegeben.';
                                     }
                                  }
                              ?> 
                              BTW: Wenn du den Code sauber formatierst/einrückst, dann fällt dir eine eine Fehlende Klammer auch schneller/leichter auf (falls dein Editor nichts markiert etc.)

                              http://php-de.github.io/jumpto/if/#notierung

                              LG
                              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