Ankündigung

Einklappen
Keine Ankündigung bisher.

Datensatz hinzufügen

Einklappen

Neue Werbung 2019

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

  • Datensatz hinzufügen

    Hallo!
    Ich verwende folgendes Formular um einen Datensatz hinzuzufügen:
    HTML-Code:
    <form name="hinzufuegen" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
    <input type="hidden" name="aktion" value="1" />
    Nr: <input type="text" name="nr" />
    Name: <input type="text" name="name" >
    Vorname: <input type="text" name="vorname" >
    email: <input type="text" name="mail" >
    Kürzel: <input type="text" name="kuerzel" >
    <input type="submit" value="ok" />
    
    </form>
    Mein Insert Block sieht wie folgt aus
    PHP-Code:
    if ( isset($_POST['aktion'])) {
        if (
    $_POST["aktion"]==1) {
            
    $nr $_POST["nr"];
            
    $name $_POST["name"];
            
    $vorname $_POST["vorname"];
            
    $mail $_POST["mail"];
            
    $kuerzel $_POST["kuerzel"];
            
    $sql "insert into lehrer (nr,name,vorname,mail,kuerzel) values (?,?,?,?,?);";
            
    $statement $mysqli->prepare($sql);
            
    $statement->bind_param('issss'$nr$name$vorname$mail$kuerzel);
            
    $statement->execute(); //Select ausführen

            
    $result $statement->get_result(); //Ergebnis in $result speichern

        
    }

    Ich bekomme aber immer folgende Fehlermeldung:
    Fatal error: Call to a member function bind_param() on boolean in index_loesung.php on line 38
    Zeile 38 ist folgende Zeile: $statement->bind_param('issss', $nr, $name, $vorname, $mail, $kuerzel);

    Hoffe es kann mir hier jemand weiterhelfen, wo der Fehler liegen könnte.
    Danke

  • #2
    prepare() liefert FALSE zurück und kein Objekt.

    Du solltest das Error-Reporting von mysqli aktivieren:
    PHP-Code:
    mysqli_report(MYSQLI_REPORT_ALL); 

    Kommentar


    • #3
      Hallo!
      Vielen Dank für die Antwort und Hinweis.
      Das Problem war das Feld nr. Es heißt id in der Datenbank.
      Danke

      Kommentar


      • #4
        Wenn es eine id ist, warum lässt du diese dann nicht automatisch von der Datenbank hochzählen?
        Was passiert in der jetzigen Version, wenn jemand eine id eingibt die schon existiert?
        Du solltest auch prüfen ob die Felder nicht leer sind oder dort Müll drin steht.

        php_self ist auch eine Sicherheitslücke. lasse action einfach weg, dann erreichst du das gleiche(HTML5 vorausgesetzt).

        Es gibt auch das Element label zur Bennenung der Formularfelder, schaue es dir mal an.

        Kommentar

        Lädt...
        X