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

  • #31
    Zitat von moma Beitrag anzeigen
    http://php.net/manual/de/mysqli.prepare.php

    beispiel #1

    achja, bitte nicht objectorientierten und prozeduralen stil mischen....
    Danke, habe den Code soweit geändert:

    PHP-Code:
    $stmt mysqli_prepare($link$query);
    mysqli_stmt_bind_param($stmt's'$_POST['search']);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_close($stmt);
    mysqli_close($link);

    /* und in der connect.php */

    $link mysqli_connect($hs$us$ps$db) or die("Keine Verbindung"); 
    meh();

    Kommentar


    • #32
      Ich habe nun folgende Fehler:

      Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given

      Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given

      Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given

      Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given
      meh();

      Kommentar


      • #33
        is wohl das stament falsch.
        poste doch mal $query, oder lass dir fehler ausgeben?

        http://php.net/manual/en/mysqli.quic...statements.php

        http://php.net/manual/de/mysqli.error.php

        Kommentar


        • #34
          genau, und daher wird

          PHP-Code:
          $stmt mysqli_prepare($link$query); 
          dein $stmt false sein. Frag doch mal mysqli_error() danach ab http://php.net/manual/de/mysqli.error.php das sagt dir dann auch wo der Schuh drückt.
          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


          • #35
            PHP-Code:
            <?php
                
            include("connect.php"); 
                
            $keywords strtolower($_POST['search']);
                           
                           if (isset(
            $keywords) && $keywords !="") {
                                     
                            
            $stmt mysqli_stmt_init($link);
                            
            mysqli_stmt_prepare($stmt'SELECT title, keywords, link, description from search WHERE title like ? or keywords like ?');
                            
            $keywords_temp "%".$keywords."%";
                            
            mysqli_stmt_bind_param($stmt"ss"$keywords_temp,$keywords_temp);
                            
            mysqli_stmt_execute($stmt);                
                            
                            echo 
            'Ihre Suche nach <i>'.$_POST['search'].'</i> ergab:<br/>';
                            
            $query_exists false;
                            
            mysqli_stmt_bind_result($stmt,$db_title$db_keywords$db_link$db_description);
                            
            $displayed_links "";
                            while(
            mysqli_stmt_fetch($stmt)) {
                            
            $db_keywords strtolower($db_keywords);
                            
            $db_keywords preg_split("#,#",$db_keywords);
                            for(
            $i 0; isset($db_keywords[$i]); $i++) {
                            if(
            $db_keywords[$i] == $keywords) {
                            
            $query_exists true;
                            echo 
            "<br />";
                            echo 
            "<a class=\"title\" href=\"".$db_link."\">".$db_title."</a> <br /> <p>".$db_description."</p>";
                            
            $displayed_links .= $db_link;
                            break;
                            }
                            }
                            
            $db_title_array strtolower($db_title);
                            
            $db_title_array preg_split("# #",$db_title_array);
                            for(
            $i 0; isset($db_title_array[$i]); $i++) {
                            if(
            $db_title_array[$i] == $keywords && preg_match("#".$db_link."#",$displayed_links) == 0) {
                            
            $query_exists true;
                            
                            echo 
            "<br />";
                            echo 
            "<a class=\"title\" href=\"".$db_link."\">".$db_title."</a> <br /> <p>".$db_description."</p>";
                            break;
                            }
                            }
                            }
                            if(!
            $query_exists) {
                            echo 
            "<br /> Es wurden keine &Uuml;bereinstimmungen gefunden.";
                            }
                            }
                            else {
                            echo 
            '<br/> Es wurde kein Suchbegriff eingegeben. <br /><br />'
                            }
                            
                            
            mysqli_stmt_close($stmt);
                            
            mysqli_close($link);
                            
            ?>
            Habe ich die prepared Statements Methode nun richtig angewendet? Ich habe keine Fehler mehr, die Suche funktioniert einwandfrei. Auf Befehle reagiert die Suchmaschine, denke ich, nicht (getestet mit test $(sleep 4)).
            meh();

            Kommentar


            • #36
              Auf Befehle reagiert die Suchmaschine, denke ich, nicht (getestet mit test $(sleep 4)).
              Was meinst du damit?

              PHP-Code:
              echo 'Ihre Suche nach <i>'.$_POST['search'].'</i> ergab:<br/>'
              Da gehört auf jeden Fall mindestens noch ein htmlspecailchars() rein.

              Siehe auch:
              http://php-de.github.io/jumpto/kontextwechsel/
              http://php-de.github.io/jumpto/sicherheit/

              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