Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Suche

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Suche

    Hallo,

    ich habe eine kleine Webseite gebaut mit einer Suche, dieser sucht in einer Datenbank und gibt die ganze Zeile zurück. Allerdings funktioniert diese nur wenn ich nach Zahlen suche, sobald Buchstaben in der Suche sind kommt folgendes:
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\konfiguration.php on line 55

    Code:
    	@$test=$_POST['suche'];
    	$sql = "SELECT Containernummer, Uhrzeit, Stoff1, Menge1, Einheit1, Prozent1 FROM import WHERE Containernummer = $test ";
    	$db_erg = mysqli_query( $db_link, $sql );
    	echo @$zeile['Containernummer'];
    	
    	// Erstelle Tabelle
    	echo '<table border="1", class="tabelle">';
    	while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    	{
    	  echo "<tr>";
    	  echo "<td>". $zeile['Containernummer'] . "</td>";
    	  echo "<td>". $zeile['Uhrzeit'] . "</td>";
    	  echo "<td>". $zeile['Stoff1'] . "</td>";
    	  echo "<td>". $zeile['Menge1'] . "</td>";
    	  echo "<td>". $zeile['Einheit1'] . "</td>";
    	  echo "<td>". $zeile['Prozent1'] . "</td>";
    	  echo "</tr>";
    	}
    	echo "</table>";
    ?>
    
    
    
    
    		</td>
    		<!-- Suche HTML Code -->
    		<td align="right" valign="top">
    		<form action="Konfiguration.php" method="post">
    
    		<p id="suche">
    			<input type="text" name="suche"/>
    
    			<input type="submit" value="suchen" />
    		</p>
    Das hier ist der relevante Code dazu, ich finde den Fehler jedoch nicht...
    Die Zeile die fett markiert ist, ist die Zeile 55.
    Die Spalte der Datenbank ist vom Typ Varchar.

    Mit freundlichen Grüßen
    Thomas C

  • #2
    Keine Hochkommas um den Suchbegriff in der Query, bei Ints hat er kein Problem, bei Strings wirft er einen Fehler.

    Ich empfehler den Einsatz von prepared Statements, die schützen dich auch gleich vor SQL-Injections.
    Und mach die @'s weg, Fehlermeldungen unterdrücken ist schlecht.
    [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


    • #3
      Stichwort Hochkommas bei SQL-Abfragen.
      Was machen die ganzen @s. Das ist schlechter Stil.
      Dann der hinweis auf sql-injection-gefahr.
      Und wieso kein LIKE bei der Suche?
      Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

      Kommentar


      • #4
        Dann schau halt mal was $db_erg ist bzw. beinhaltet. Wenn du mysqli_error... abfragen würdest, würdest du ach schon vorher die Info bekommmen das das was nicht korrekt ist. (Weil die Query schon auf einen Fehler läuft. So fällt es halt erst im nächsten Schritt der Verarbeitung auf weil kein Result da ist.

        Da, schau dir das an und bau das mit ein: http://www.peterkropff.de/site/php/mysqli_fehler.htm

        Und .. wurde ja schon genannt, deine query ist nicht sicher! 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


        • #5
          @VPh: Wo meinst du sollen die Hochkommata weg und was sind prepared Statements, bzw. wie benutze ich diese?
          @Geromel: Die @s sind weg, kein Like weil der User den ganzen Suchbegriff eingeben soll.
          @hausl: Wenn ich $db_erg Abfrage zeigt er mir "Notice: Undefined variable: zeile in C:\xampp\htdocs\konfiguration.php on line 51" an.

          Kommentar


          • #6
            Zitat von Thomas C Beitrag anzeigen
            ...
            @hausl: Wenn ich $db_erg Abfrage zeigt er mir "Notice: Undefined variable: zeile in C:\xampp\htdocs\konfiguration.php on line 51" an.
            Naja an der Stelle kann es das ja auch nicht geben, das exisitert erst ab/in der Schleife dann weiter unten, schau genau.

            Jetzt weißt du ja wo die Fehler sind, brauchst nur noch zu beheben.

            Zu dem noch vorgegriffen

            und was sind prepared Statements, bzw. wie benutze ich diese?
            google mal die Begriffe
            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


            • #7
              PHP-Code:
              $db_erg mysqli_query$db_link$sql )
                 or die (
              "MySQL-Error: " mysqli_error($db_link)); 
              Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

              Kommentar


              • #8
                Den Fehler ausgeben hat jetzt funktioniert, vorab vielen Dank dafür...
                Der Fehler sagt mir das ich einen Syntax Error hab, jedoch weiß ich leider nicht wo:

                MySQL-Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0769280' at line 1

                Kommentar


                • #9
                  PHP-Code:
                  $sql "SELECT 
                             `Containernummer`, 
                             `Uhrzeit`, 
                             `Stoff1`, 
                             `Menge1`, 
                             `Einheit1`, 
                             `Prozent1` 
                           FROM 
                             `import` 
                           WHERE 
                             `Containernummer` = '
                  $test'"
                  Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                  Kommentar


                  • #10
                    hast du die Hochkommata eingefügt? wenn nein, dann solltest du bevor du mit deinem Script weitermachst, erstmal noch ne Runde Grundlagen lesen...
                    Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                    Kommentar


                    • #11
                      @uha Vielen Dank, die Suche funktioniert jetzt so wie ich sie mir vorgestellt habe!

                      Kommentar

                      Lädt...
                      X