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

Datensätze werden nicht vollständig eingefügt

united-King

Neues Mitglied
Guten Nachmittag Community,

Es werden bei mir irgendwie keine Datensätze bzw. strings in die Datenbank eingefügt.
Meine Datenbank ist so aufgebaut mit der Tabellen-Struktur: id = Primary + Auto increment , user = varchar + Primary , pw = varchar (zeichenlänge 25 ebenso bei user) ist erstmal halt für Testzwecke so erstellt.

Er fügt nur den ID Datensatz ein das der sich halt immer steigert doch user und pw bleibt leer.

Mein PHP-Code:
PHP:
<?php
$username = $_POST["username"];
$password = $_POST["password"];

$mysqli = new mysqli ("mysql.lima-city.de", "USER", "pw", "db_328756_1");

if (mysqli_connect_errno ()) {
printf ( "Verbindung fehlgeschlagen:%s \n" , mysqli_connect_error());
exit();
}

$id = mysqli_real_escape_string($username);
$pw = mysqli_real_escape_string($password);
if(isset($_POST["senden"]))
{
if($mysqli->query("INSERT INTO account (user,pw) VALUES ('$id','$pw')")) {
printf ( "%d Zeile eingefügt. \n", $mysqli->affected_rows); }
}
else
{
echo "Bitte alle Felder ausfüllen!";
}
$mysqli->close();
?>

<p><input name="username" size="25" placeholder="Username"> <input type="passsword" name="password" size="25" placeholder="Passwort"></p>
<p><input type="submit" value="Absenden" name="senden">
 
Du hast zwei Primarykeys? Wofür?

Hast du mal vorher überlegt zu überprüfen ob deine Werte überhaupt gesetzt sind? Außerdem gibst du ja nirgendwo an ob die Daten per POST oder GET übermittelt werden sollen.
 
Für die 2 Primary Keys , einmal für die normale ID bzw. das es sich immer um 1 steigert damit es "geordnet" nach Zahlen ist sag ich jetzt mal. Das zweite für den username , man soll ja nur ein einzigen Username haben mit den man sich ja einloggen kann.

Kommen wir zu dein Kommentar mit dem POST or GET , sorry habe es aber nicht im Quellcode angezeigt aber es steht oben <form Action="Datei.php" method="post">.
 
Also werden bei dir die Felder nicht richtig übermittelt.

Versuch das hier mal:
PHP:
<?php

if (isset($_POST['senden'])) {
     
    $mysqli = new mysqli ("mysql.lima-city.de", "USER", "pw", "db_328756_1");

    if (mysqli_connect_errno ()) {
        printf ( "Verbindung fehlgeschlagen:%s \n" , mysqli_connect_error());
        exit();
    }

    $username = mysqli_real_escape_string($_POST["username"]);
    $password = mysqli_real_escape_string($_POST["password"]);

    if ($mysqli->query("INSERT INTO account (user, pw) VALUES ('$username', '$password')")) {
        printf ( "%d Zeile eingefügt. \n", $mysqli->affected_rows); }
    }

    $mysqli->close();

} else {

?>

<form Action="<?php $_SERVER['SCRIPT_NAME'] ?>" method="POST">
    <p><input name="username" size="25" placeholder="Username">
    <input type="passsword" name="password" size="25" placeholder="Passwort"></p>
    <p><input type="submit" value="Absenden" name="senden"></p>
</form>

<?php } ?>

Ganz wichtig!
Passwörter speichert man nicht als Klartext! Man sollte sie nicht mal als Klartext übertragen!
In der Datenbank speichert man sie gesalzt als Hash!
http://de.wikihow.com/Ein-sicheres-Login-Skript-mit-PHP-und-MySQL-erstellen
 
Wenn ich es so mache und die Webseite aufrufe steht da Programmierfehler, 2. habe das else weggelassen und kam zur Homepage nur wurden meine Inputs nicht angezeigt sondern aus irgendeinem Grund ausgebendet
 
Sollte so eigentlich Funktionieren..

Möchtest du das Formular auch nach dem Eintrag von Daten angezeigt haben?
Poste doch mal deinen aktuellen Code..
 
Das ist der von eben nur bisschen überarbeitet. Da funktoniert alles auch bei var_dump zeigt er string(4)Name etc an trotzdem überliefert er kein Eintrag in der DB

PHP:
<?php
if(isset($_POST["senden"])) {
$mysqli = new mysqli("mysql.lima-city.de", "USER", "pw", "db_328756_1");

if (mysqli_connect_errno()) {
printf ("Verbindung fehlgeschlagen:%s \n", mysqli_connect_error());
exit();
}

$username = mysqli_real_escape_string($_POST["username"]);
$password = mysqli_real_escape_string($_POST["password"]);

if ($mysqli->query("INSERT INTO account (user,pw) VALUES ('$username','$password')")) {
printf ("%d 1 Zeile eingeüfgt ", $mysqli->affected_rows); }
var_dump($_POST);
}
else
{
echo "Alle Felder ausfüllen";
}
?>
<form action="<?php $_SERVER['SCRIPT_NAME'] ?>" method="post">
<p><input name="username" size="25" placeholder="Username"></p>
<p><input type="passsword" name="password" size="25" placeholder="Passwort"></p>
<p><input type="submit" value="Absenden" name="senden"></p>

VAR_DUMP POST: 1 1 Zeile eingeüfgt array(3) { ["username"]=> string(8) "asdhasdh" ["password"]=> string(3) "asd" ["senden"]=> string(8) "Absenden" }
 
PHP:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">Anmelden</button>
</form>
<?php

if(isset($_POST['username'], $_POST['password'])) {
     if((empty($_POST['username']) AND empty($_POST['password'])) === FALSE) {
          // Daten weiter verarbeiten.
}
}


?>
 
Von Nookie danke aber habe immernoch ein Fehler. Lassen wir die Sache stecken wollte jetzt mal in einer anderen Richtung es probieren.

PHP:
<form Action="<?php $_SERVER['SCRIPT_NAME'] ?>" method="POST">
<input type="text" name="username" required="required">
<input type="password" name="password" required="required">
<button type="submit">Anmelden</button>
<?php
if ("POST" == $_SERVER["REQUEST_METHOD"]) {

include "verbindung.php";

$anzeige = isset($_POST["anzeige"]) ? 1 : 0;


$insert = $verbindung->prepare("INSERT INTO `account`
 SET
 `user` = :username,
 `pw` = :password");
 
$insert->bindValue(':username', $_POST["username"]);
$insert->bindValue(':password', $_POST["password"]);
$insert->bindValue(':anzeige', $anzeige);

if ($insert->execute()) {
echo '<p>Die Naricht wurde eingetragen</p>';
}
else {
print_r($insert->errorInfo());
}
}
?>
Bekomme den Error: Array ( [0] => HY093 [1] => [2] => )
 
Zurück
Oben