Datensätze werden nicht vollständig eingefügt

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(); ?>

[/PHP]

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 .

Was zeigt dir ein var_dump($_POST)??

1 Zeile eingefügt. array(3) { [„username“]=> NULL [„password“]=> NULL [„senden“]=> string(8) „Absenden“ }

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 { ?>

<?php } ?>[/php]

[SIZE=5]Ganz wichtig![/SIZE]
[SIZE=4]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 [/SIZE]

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"; } ?>

[/PHP]

VAR_DUMP POST: 1 1 Zeile eingeüfgt array(3) { [„username“]=> string(8) „asdhasdh“ [„password“]=> string(3) „asd“ [„senden“]=> string(8) „Absenden“ }

[PHP]


Anmelden

<?php

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

?>[/PHP]

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

[PHP]

Anmelden <?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 ‚

Die Naricht wurde eingetragen

‘;
}
else {
print_r($insert->errorInfo());
}
}
?>
[/PHP]

Bekomme den Error: Array ( [0] => HY093 [1] => [2] => )

Wenn Du nach dem Fehlercode HY093 gesucht hättest wärst Du auf den Hinweis gekommen, dass die Anzahl der Parameter nicht stimmt. „:anzeige“ gibst Du zwar an, nutzt es aber im Statement gar nicht.
http://stackoverflow.com/questions/10966251/sqlstatehy093-invalid-parameter-number-parameter-was-not-defined