2016-06-07 9 views
1

Dieser Server erkennt die PHP-Verbindung, aber die in das Formular eingegebenen Werte werden nicht nur leere Tabellenzeilen gespeichert.PHP sendet leere Formularwerte an Server

Der PHP-Code:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Aliens Abducted Me - Report an Abduction</title> 
</head> 
<body> 
    <h2>Aliens Abducted Me - Report an Abduction</h2> 

<?php 


    $name = $_POST'firstname'; 
    $last_name =$_POST'lastname'; 
    $when_it_happened = $_POST'whenithappened'; 
    $how_long = $_POST'howlong'; 
    $how_many = $_POST'howmany'; 
    $alien_description = $_POST'aliendescription'; 
    $what_they_did = $_POST'whattheydid'; 
    $fang_spotted = $_POST'fangspotted'; 
    $email = $_POST'email'; 
    $other = $_POST'other'; 

    $dbc = mysqli_connect('localhost', 'root', 'Password', 'aliendatabase') 
    or die('Error Connecting to MySQL server'); 

    $query = "INSERT INTO aliens_abduction (first_name, last_name, when_it_happened, how_long, " . 
    "how_many, alien_description, what_they_did, fang_spotted, other, email) " . 
    "VALUES ('$first_name, '$last_name', '$when_it_happened', '$how_long', '$how_many', " . 
    "'$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')"; 

    $result = mysqli_query($dbc, $query) 
    or die('Error Querying Database'); 

    mysqli_close($dbc); 

    echo 'Thanks for submitting the form.<br />'; 
    echo 'You were abducted ' . $when_it_happened; 
    echo ' and were gone for ' . $how_long . '<br />'; 
    echo 'Number of aliens: ' . $how_many . '<br />'; 
    echo 'Describe them: ' . $alien_description . '<br />'; 
    echo 'The aliens did this: ' . $what_they_did . '<br />'; 
    echo 'Was Fang there? ' . $fang_spotted . '<br />'; 
    echo 'Other comments: ' . $other . '<br />'; 
    echo 'Your email address is ' . $email; 

?> 

</body> 
</html> 

Hier ist die Form/HTML-Code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Aliens Abducted Me - Report an Abduction</title> 
    <link rel="stylesheet" type="text/css" href="style.css" /> 
</head> 
<body> 
    <h2>Aliens Abducted Me - Report an Abduction</h2> 

    <p>Share your story of alien abduction:</p> 
    <form method="post" action="report.php"> 
    <label for="firstname">First name:</label> 
    <input type="text" id="firstname" name="firstname" /><br /> 
    <label for="lastname">Last name:</label> 
    <input type="text" id="lastname" name="lastname" /><br /> 
    <label for="email">What is your email address?</label> 
    <input type="text" id="email" name="email" /><br /> 
    <label for="whenithappened">When did it happen?</label> 
    <input type="text" id="whenithappened" name="whenithappened" /><br /> 
    <label for="howlong">How long were you gone?</label> 
    <input type="text" id="howlong" name="howlong" /><br /> 
    <label for="howmany">How many did you see?</label> 
    <input type="text" id="howmany" name="howmany" /><br /> 
    <label for="aliendescription">Describe them:</label> 
    <input type="text" id="aliendescription" name="aliendescription" size="32" /><br /> 
    <label for="whattheydid">What did they do to you?</label> 
    <input type="text" id="whattheydid" name="whattheydid" size="32" /><br /> 
    <label for="fangspotted">Have you seen my dog Fang?</label> 
    Yes <input id="fangspotted" name="fangspotted" type="radio" value="yes" /> 
    No <input id="fangspotted" name="fangspotted" type="radio" value="no" /><br /> 
    <img src="fang.jpg" width="100" height="175" 
     alt="My abducted dog Fang." /><br /> 
    <label for="other">Anything else you want to add?</label> 
    <textarea id="other" name="other"></textarea><br /> 
    <input type="submit" value="Report Abduction" name="submit" /> 
    </form> 
</body> 
</html> 

Der Code ist gerade aus einem Buch. php v5.6.22 und neueste Apache und MySQL. Kann mir jemand sagen, was falsch ist oder was ich falsch mache

+0

Ihr PHP kann möglicherweise nicht ausgeführt werden, es hat Dutzende von Syntaxfehlern. – Barmar

Antwort

4

Sehen Sie dies =>$_POST'firstname'; und alle anderen POST-Arrays?

Sie fehlen Klammern [] für sie.

Also ändern Sie das zu $_POST['firstname']; und machen das gleiche für alle anderen auch.

Die Fehlerberichterstattung hätte Ihnen hier geholfen, ebenso wie das Lesen des Handbuchs auf Formularen.

Plus sollten Sie eine bedingte !empty() gegen alle POST-Arrays gehen in Ihrer Datenbank verwenden.

Dies könnte Fehler auslösen, wenn einige davon leer bleiben, sollte Ihre Datenbank keine NULL-Werte akzeptieren.

Sie haben auch ein fehlendes Angebot für ('$first_name, und verkettet in Ihrer Abfrage.

Dies benötigt als solche neu geschrieben werden:

$query = "INSERT INTO aliens_abduction (first_name, last_name, when_it_happened, how_long, 
    how_many, alien_description, what_they_did, fang_spotted, other, email) 
    VALUES ('$first_name', '$last_name', '$when_it_happened', '$how_long', '$how_many', 
    '$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')"; 

Fußnoten:

Ihr jetziger Code ist zu SQL injection offen. Verwenden Sie prepared statements oder PDO mit prepared statements.

+0

Fehlerberichte helfen nicht bei Syntaxfehlern, da nichts im Skript ausgeführt wird. – Barmar

+0

@Barmar Habe ich etwas verpasst? –

+0

@Barmar Ok, ich habe jetzt mehr gesehen. Lordie, ich denke, ich muss diese ganze Zeile umschreiben. –

Verwandte Themen