• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mysqli Daten in Tabelle schreiben

htfreaker

Neues Mitglied
Moin

Also ich hab für mein Gästebuch eine Datenbank + Tabelle erstellt, mit den Feldern NAME TEXT DATUM ID. Nun hab ich das ganze mit MySQLi abgefragt, was auch ganz gut geklappt hat. Nun hab ich aber Probleme bei dem Einfügen von Datensätzen. Hier mein bisher geschriebener CODE:

PHP:
<?php
    $name = $_POST['name'];
    $text = $_POST['text'];
    $name = $_POST['datum'];
    // Neues Datenbank-Objekt erzeugen
    $db = @new mysqli( 'localhost', 'root', '*******', 'guests' );
    // Pruefen ob die Datenbankverbindung hergestellt werden konnte
    if (mysqli_connect_errno() == 0)
    {
        $sql = 'INSERT INTO `gaeste` (`name`, `text`, `datum` ) VALUES (?, ?, ?)';
        $eintrag = $db->prepare( $sql );
        $eintrag->bind_param( 'sss', $name, $text, $datum);
        $eintrag->execute();
        // Pruefen ob der Eintrag efolgreich war
        if ($eintrag->affected_rows == 1)
        {
            echo 'Der neue Eintrage wurde hinzugef&uuml;gt.';
        }
        else
        {
            echo 'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
        }
    }
    else
    {
        // Es konnte keine Datenbankverbindung aufgebaut werden
        echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <span class="hinweis">' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). '</span>';
    }
    // Datenbankverbindung schliessen
    $db->close();


?>
Nun bekomm ich immer die Meldung "Eintrag wurde NICHT hinzugefügt". Wer kann mir helfen? Bin MySQLi Neuling, habe aber Erfahrungen mit MySQL und PHP

Gruss
htfreaker
 
hey
hmm was immer hilft ist sich affected_rows ausgeben zu lassen, um zu schauen was fuer ein wert ueberhaupt vorliegt.
Waere der wert NICHT 1 springt es bei dir sofort in den else teil der if-abfrage.
 
htfreaker schrieb:
PHP:
$sql = 'INSERT INTO `gaeste` (`name`, `text`, `datum` ) VALUES (?, ?, ?)';
Hast du denn die Fragezeichen auch durch $name, $text und $datum ersetzt?

P.S. In den ersten paar Zeilen definierst du $name zwei mal, einmal mit dem Namen und einmal mit Datum.
 
Das ist auch so. Sieht auf den ersten Blick okay aus. Lass dir mal in dem if-Zweig, der ausgelöst wird, den Fehler anzeigen. Vermutlich:

PHP:
echo $eintrag->error;

PHP: mysqli_stmt->error - Manual

Edit: Wobei, das nicht-definierte $datum könnte eventuell auch die Ursache sein. Was sich in Skripten immer gut macht, ist eingeschaltetes error_reporting. Ganz oben in der Datei:

PHP:
error_reporting(E_ALL | E_STRICT);
 
soo geschafft. Hier nochmal der funktionierende Code:
PHP:
<?php
    $datum = date("t.m.Y");       //Hier hatte ich versucht das Datum per POST zu übertragen, was natürlich prompt schiefgelaufen ist
    $name = $_POST['name'];
    $text = $_POST['text'];
    // Neues Datenbank-Objekt erzeugen
    $db = @new mysqli( 'localhost', 'root', 'sundown', 'guests' );
    // Pruefen ob die Datenbankverbindung hergestellt werden konnte
    if (mysqli_connect_errno() == 0)
    {
        $sql = 'INSERT INTO `gaeste` (`name`, `text`, `datum` ) VALUES (?, ?, ?)';
        $eintrag = $db->prepare( $sql );
        $eintrag->bind_param( 'sss', $name, $text, $datum);
        $eintrag->execute();
        // Pruefen ob der Eintrag efolgreich war
        if ($eintrag->affected_rows > 0)     //ich weiss nicht ob das sinnvoll ist, habs jetzt aber so eingestellt, auf jedenfall funzt es!
        {
            echo 'Der neue Eintrage wurde hinzugef&uuml;gt.';
        }
        else
        {
            echo 'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
            echo 'da: ';
            echo $eintrag->error;   //Danke für den Tipp, war echt hilfreich so konnte ich genau sehen wo das Problem lag... THX:D
        }
    }
    else
    {
        // Es konnte keine Datenbankverbindung aufgebaut werden
        echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <span class="hinweis">' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). '</span>';
    }
    // Datenbankverbindung schliessen
    $db->close();


?>


Soo ich hab mal die Stellen markiert wo ich was verändert hab. Dann Danke für eure Hilfe, jetzt funzt es auf jeden fall THX

LG
htfreaker
 
Zurück
Oben