1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Datenbankabfrage mit Formular

Dieses Thema im Forum "PHP" wurde erstellt von Platinoy, 27. November 2016.

  1. Platinoy

    Platinoy Grünschnabel

    Hallo Zusammen,

    mein "Problem" ist bestimmt für viele hier ein "Klacks" jedoch komme ich gerade nicht weiter.
    Es geht darum, das ich gerne ein Formular abschicken will, welches mir dann in der Datenbank nach dem gewünschten Inhalt sucht und ausgibt.
    Es handelt sich eigentlich nur um Namen. Wenn - teils eingegebene - Name in das Textfeld des Formulars abgeschickt wird und in der Datenbank gespeichert ist, soll php mir den Namen + Straße etc ausgeben.
    Egal was ich jedoch in das Formular eingebe, es kommt immer dieser Fehler:
    mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in

    Mein Formular sieht so aus:
    Code (HTML5):
    1. <form action="abfrage.php" method="post">
    2.     <p><input name="name" /></p>
    3.      <p><input type="submit" value="Anfrage absenden" /></p>
    4. </form>
    und meine php-Datei so:
    Code (PHP):
    1. <?php
    2.    require_once ('konfiguration.php');
    3.    $db_link = mysqli_connect (
    4.                     MYSQL_HOST,
    5.                     MYSQL_BENUTZER,
    6.                     MYSQL_KENNWORT,
    7.                     MYSQL_DATENBANK
    8.                    );
    9.  
    10.    $sql = "SELECT * FROM `Waldbesitzer` WHERE `name` LIKE '$_POST["name"]' ";
    11.    $res = mysqli_query($db_link, $sql);
    12.    $num =mysqli_num_rows($res);
    13.    if ($num ==0) echo "Keine passende Datensätze gefunden";
    14.  
    15.    while ($dsatz = mysqli_fetch_assoc($res))
    16.    {
    17.        echo $dsatz["name"] . ", "
    18.           . $dsatz["strasse"] . ", "
    19.           . $dsatz["hausnummer"] . ", "
    20.           . $dsatz["plz"] . ", "
    21.           . $dsatz["ort"] . ", "
    22.           . $dsatz["geburtstag"] . ", "
    23.           . $dsatz["region"] . ", "
    24.           . $dsatz["hektar"] . "<br />";
    25.    }
    26.  
    27.    mysqli_close($db_link);
    28.  
    29. ?>
    wäre toll wenn mir jemamd helfen könnte

    DANKE im Voraus
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    zwei große Probleme:

    a) Viele der Datenbaknfunktionen können fehlschlagen. Meistens bekommt man dann false zurück, das man per if einfach überprüfen kann. zB. nach connect:
    Code (Text):
    1. if(!$db_link) { /*Fehler, nicht weitermachen*/ }
    Auch nach mysqli_query mit $res das Selbe

    Bei dir ist $res jedenfalls false, deshalb die Fehlermeldung, nur ist zurzeit nicht erkennbar ob es wegen $db_link oder $sql passiert.

    b) $_POST["name"] so einfach in die Abfrage einfügen ist sehr schlecht, weil man mit den passenden Eingaben im Formular die Abfrage grundsätzlich ändern kann, statt nur den Namen einzufügen. Siehe "Prepared Statements" (mehr als genug Beiträge dazu), womit es besser geht.
     
Die Seite wird geladen...