2016-05-01 8 views
0

Ich lerne PHP und SQL, indem ich MAMP auf meinem Mac laufe und über phpMyAdmin auf die Datenbank zugreife.Warum fügt meine MySQL-Datenbank leere Zeilen hinzu?

Ich habe ein PHP-Skript gemacht, um einen neuen Benutzer zu einer Tabelle hinzuzufügen, einen zum Vergleichen eingegebener Daten mit der Tabelle (Login) und einen zum Schließen eines Kontos. Alle Skripte sind sehr einfach und die Daten werden überhaupt nicht bereinigt, da ich mich nur an die Grundlagen von PHP gewöhnt habe.

Ich habe festgestellt, dass, nachdem ich das Skript für die Kontoerstellung (Einfügen von Daten) ausgeführt habe, ein paar Sekunden nach der Ausführung des Skripts eine neue Zeile mit einer ID (die ich auf automatisch festgelegt wurde) hinzugefügt Inkrement), aber keine anderen Daten.

Ich frage mich nur, ob der Grund dafür in MySQL etwas ist, das ich gerade vermisse.

Hier finden Sie die Kontoerstellung Skript:

<?php 
//Get values from HTML form 
$varUsername = $_POST['username']; 
$varPassword = $_POST['password']; 
$varPasswordHash = password_hash($varPassword, PASSWORD_DEFAULT); 

//Establish connection to database 
$server = "localhost"; 
$username = "root"; 
$password = "root"; 
$database = "members"; 

$connection = mysqli_connect($server, $username, $password, $database); 
if(!$connection) 
{ 
    die("Connection failed: " . mysqli_connect_error()); 
} 

//Send data to database 
$action = "INSERT INTO details (USERNAME, PASSWORD) VALUES ('$varUsername', '$varPassword')"; 

if(mysqli_query($connection, $action)) 
{ 
    echo 'Account created.'; 
} 
else 
{ 
    echo 'Account creation failed: ' . mysqli_error($connection); 
} 

mysqli_close($connection); //End connection to database 
?> 

und das HTML-Formular mit ihm zu gehen:

<html> 
<body> 
    <form action="sign_up.php" method="post"> 
     <input type="text" name="username"> 
     <input type="text" name="password"> 
     <input type="submit"> 
    </form> 
</body> 
</html> 
+1

Können Sie dieses Skript mit uns teilen? –

+1

Entweder haben Sie einen Trigger für diese Tabelle oder eine fehlende Schleifenlogik fügt einen zusätzlichen Datensatz ein. Teilen Sie den Code, egal wie teribad. – Mihai

+0

Haben Sie das Debuggen probiert? Bitte zeigen Sie auch Ihren HTML-Code an. Sie sollten print_r ($ _ POST) in der allerersten Zeile versuchen und sehen, was Ihre POST-Daten sind. Ich denke, Sie erhalten nicht die gewünschten POST-Daten. –

Antwort

2

ich bin in diesem Augenblick eine Vermutung zu machen ...

Ich würde dem Skript selbst eine zusätzliche if-Anweisung hinzufügen. Wie folgt aus:

if (isset($_POST['submit-form'])) { 
    // All the above to insert the data into the script... 
} 

Es wäre sinnvoll, wenn Sie die sign_up.php selbst besuchen und feststellen, gibt es einen neuen Eintrag in der Datenbank gemacht.

Sie müssen Ihren HTML-Code etwas ändern, damit die if-Anweisung funktioniert.

Fügen Sie einfach name='submit-form' an den Absenden-Button: <input type="submit" name="submit-form">

Dies wird das Skript mehr komplett.

Auch ein kleines Update zu dem Thema, wie ich gerade gelesen habe, dass es eine leere Zeile hinzufügt, nachdem Sie ein leeres Formular abschicken.

Sie können prüfen, ob die Felder mit ausgefüllt sind, erraten, was eine weitere if-Anweisung:

if (empty($_POST['username'])) { 
    echo 'Please enter your username...'; 
} else 
if (...) 
0

Sie überprüfen nicht, ob der entsandte Werte in ihnen etwas haben, damit ein leeres Formular Ergebnisse bei der Einreichung ein leerer Eintrag im DB mit nur der ID.

Verwandte Themen