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

  • hausl
    antwortet
    Das hier ...
    PHP-Code:
        $keywords $_POST['search']; 
                    
                   if (isset(
    $keywords)) 
    ... macht so kaum Sinn, isset gehört auf $_POST['search'] angewendet, denn die Notice bekomst du schon bei der ersten Anweisung / Zugriff auf $_POST.

    Eher so:
    PHP-Code:
    if (isset($_POST['search'])) {

        
    $keywords $_POST['search'];  
        
    // ... 

    Info - das hier:

    PHP-Code:
    $link mysqli_connect($hs$us$ps); 
    mysqli_select_db($link$db); 
    geht auch so:

    PHP-Code:
    $link mysqli_connect($hs$us$ps$db); 

    Dazu:

    PHP-Code:
    <?php 
    $hs 
    "bla"
    $us "bla"
    $ps "bla"
    $db "bla";

    // ...

    $us mysqli_real_escape_string($link$us); 
    $ps mysqli_real_escape_string($link$ps); 
    $hs mysqli_real_escape_string($link$hs);
    Du sollst die Parameter die von aussen kommen für/in der Verwendung der query escapen (wenn du schon keine prepared Statements verwenden willst) und nicht die Zugangsdaten die DU sowieso selbst in der Datei da hinterlegt. Fällt dir was auf?
    In deinem Fall gehören die $keywords (die ja via POST von aussen kommen) escaped..

    Und SELECT * ist immer noch pfui.

    LG

    Einen Kommentar schreiben:


  • Joma
    antwortet
    search.php

    PHP-Code:
    <?php
        ini_set
    ('display_errors'1);
        
    error_reporting(E_ALL);
        require_once(
    'connect.php');
        
    $keywords $_POST['search'];
                   
                   if (isset(
    $keywords)) { 
                    
    $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($query)) {
                        echo 
    '<fieldset><legend><a href="http://x.com/x/x/'.$d['link'].'">'.$d['title'].'</a></legend>'.$d['description'].'</fieldset>';
                      }
                   }
                   else { 
                      echo 
    'Es wurde kein Suchbegriff eingegeben.'
                   }
        
    ?>
    connect.php

    PHP-Code:
    <?php
    $hs 
    "bla";
    $us "bla";
    $ps "bla";
    $db "bla";

    $link mysqli_connect($hs$us$ps);
    mysqli_select_db($link$db);

    $us mysqli_real_escape_string($link$us);
    $ps mysqli_real_escape_string($link$ps);
    $hs mysqli_real_escape_string($link$hs);

    ?>
    connect.php und search.php liegen im selben verzeichnis

    Einen Kommentar schreiben:


  • wolf29
    antwortet
    Hi,

    warum ich meine connect.php nicht mit require_once() einbinden kann.
    doch geht, wenn die Pfadangabe korrekt ist. Hängt auch etwas davon ab, an welcher Position du die Datei/Script du einbindest.

    Habe ich die Funktionen so richtig eingesetzt? Habe mich an die Dokumentation von http://www.w3schools.com/php/func_my...ape_string.asp
    gehalten.
    Vom Prinzip her ja. Nur maskierst du hier einfach feste Werte und keine Parameter (GET oder POST). Eleganter ist es dennoch mit prepared statements.

    Ich habe mal etwas getestet und den code der connect.php an den Anfang der search.php gesetzt. Als ich die search.php dann ausgeführt habe, verschwanden die Notizen, dass fehlende Variablen im Code seien ($link). Ich verstehe hierbei nicht, warum ich meine connect.php nicht mit require_once() einbinden kann.
    Bitte aktuellen code nochmal zeigen (stand jetzt).

    mfg wolf29

    Einen Kommentar schreiben:


  • Joma
    antwortet
    Ich habe mal etwas getestet und den code der connect.php an den Anfang der search.php gesetzt. Als ich die search.php dann ausgeführt habe, verschwanden die Notizen, dass fehlende Variablen im Code seien ($link). Ich verstehe hierbei nicht, warum ich meine connect.php nicht mit require_once() einbinden kann.

    EDIT:

    Zudem habe ich zu meinem connect.php Skript mysqli_real_escape_string() Funktionen hinzugefügt:

    PHP-Code:
    <php
    $hs 
    "bla";
    $us "bla";
    $ps "bla";
    $db "bla";

    $link mysqli_connect($hs$us$ps);
    mysqli_select_db($link$db);

    $us mysqli_real_escape_string($link$us);
    $ps mysqli_real_escape_string($link$ps);
    $hs mysqli_real_escape_string($link$hs);

    ?> 
    Habe ich die Funktionen so richtig eingesetzt? Habe mich an die Dokumentation von http://www.w3schools.com/php/func_my...ape_string.asp
    gehalten.

    Einen Kommentar schreiben:


  • Geromel
    antwortet
    welcher zweite Parameter? mit mysqli_result wird an der stelle nur dokumentiert, dass es sich bei $query um ein mysqli_result handelt...

    Einen Kommentar schreiben:


  • Joma
    antwortet
    Zitat von VPh Beitrag anzeigen
    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.
    Wenn ich nun aber bereits das Ergebnis der Datenbankabfrage in $query abgespeichert habe, wofür brauche ich dann noch einen zweiten Parameter?

    Einen Kommentar schreiben:


  • Joma
    antwortet
    Zitat von hausl Beitrag anzeigen
    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.)
    Danke, steige gerade auf Aptana um, habe bis eben mit webocton scriptly gearbeitet, was ich gerne für webdesign verwende.

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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

    Einen Kommentar schreiben:


  • VPh
    antwortet
    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.

    Einen Kommentar schreiben:


  • Geromel
    antwortet
    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....

    Einen Kommentar schreiben:


  • Joma
    antwortet
    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.

    Einen Kommentar schreiben:


  • Joma
    antwortet
    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.';
           }
        }
    ?>

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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?

    Einen Kommentar schreiben:


  • Joma
    antwortet
    Ich habe schon gewusst, dass der Fehler bei mysqli_fetch_assoc liegt. Wenn du mir nicht helfen willst kannst du mich ja einfach ignorieren

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X