2016-12-04 4 views
0

Ich versuche, in die Datenbank die Formulardaten einzufügen, aber es funktioniert nicht, ich habe den folgenden Code hinzugefügt. Bitte überprüfen Sie und informieren Sie mich, was das Problem ist. Da die Lösch- und Suchabfragen funktionieren, aber die Einfügung die einzige Abfrage ist, die nicht funktioniert. DankeDaten nicht in Datenbank einfügen

<form method="post" action= "assign5.php"> 

Name : <input type ="text" name="name" > 

<br> 

Flavor : <select name="flavor"> 

    <option value="Chocolate">Chocolate</option> 
    <option value="Vanilla">Vanilla</option> 
    <option value="Strawberry">Strawberry</option> 
    <option value="MahngiVanilla">MahngiVanilla</option> 
    <option value="SastiStrawberry">SastiStrawberry</option> 

</select> 

<br> 

Scoops: 
<input type ="radio" name="scoops" value="1">1</input> 
<input type ="radio" name="scoops" value="2">2</input> 
<input type ="radio" name="scoops" value="3">3</input> 
<input type ="radio" name="scoops" value="4">4</input> 
<input type ="radio" name="scoops" value="5">5</input> 

<input type ="submit" name="button" value="Place Order"/> 

<br> 
<br> 

    </form> 
<?php 
require_once 'login.php'; 

$connection = new mysqli($db_hostname,$db_username,$db_password,$db_database); 

if($connection ->connect_error) die($connection ->connect_error); 

if(isset($_POST['name']) && isset($_POST['Flavour']) && isset($_POST['Scoops'])){ 

    $CName=$_POST['name']; 
    $Flavor=$_POST['flavor']; 
    $Scoops=$_POST['scoops']; 

    $sql ="INSERT INTO orders VALUES (CName, Flavour, Scoops) VALUES ('$CName', '$FLAVOUR', '$Scoops')"; 
    $result=$connection->query($sql); 
    if(!$result) die($connection->error); 
    header("Location: assign5.php"); 

} 

$connection->close(); 

?> 
+0

Umzug nach __prepared statements__ –

+2

Die Variablen definiert sind in einem anderen Fall und Rechtschreibung als die in der SQL verwendet ~ '$ Flavor' und' $ FLAVOUR' – RamRaider

Antwort

0

Sie müssen Name, Geschmack & scops von Formular angeben. Auch du hast zwar dafür gesorgt aber trotzdem funktioniert deine Abfrage nicht. Weil Ihr Eingabeschlüssel bei form ein kleiner Buchstabe ist und Sie ihn bei Bedingung prüfen, indem Sie Großbuchstaben des ersten Zeichens verwenden. Also versuchen Sie es

if(isset($_POST['name']) && isset($_POST['flavour']) && isset($_POST['scoops'])){ 
..... 
..... 
} 

Sie verwendeten Werte in zwei mal. Bitte korrigieren Sie diese von

$sql ="INSERT INTO orders VALUES (CName, Flavour, Scoops) VALUES ('$CName', '$FLAVOUR', '$Scoops')"; 

An:

$sql ="INSERT INTO orders (CName, Flavour, Scoops) VALUES ('$CName', '$FLAVOUR', '$Scoops')"; 
+0

Versucht es aber immer noch nicht Daten in die db einfügen –

+0

Sie müssen Name, Geschmack & scops aus dem Formular bereitstellen. Auch du hast zwar dafür gesorgt aber trotzdem funktioniert deine Abfrage nicht. Weil Ihr Eingabeschlüssel bei form ein kleiner Buchstabe ist und Sie ihn bei Bedingung prüfen, indem Sie Großbuchstaben des ersten Zeichens verwenden. Also versuchen Sie es 'if (isset ($ _ POST ['name']) && isset ($ _ POST ['geschmack']) && isset ($ _ POST ['scoops'])) {.... }' –

+0

Got es. Jetzt arbeiten –

0

Da Sie nicht Benutzereingaben werden desinfizierende noch verwenden Sie prepared statements könnten Sie die folgenden Hinweise und vermeiden Sie die Rechtschreibung/Kapitalisierung Fehler einfach nicht:

$sql ="INSERT INTO orders (CName, Flavour, Scoops) 
    VALUES 
    ('{$_POST['name']}', '{$_POST['flavor']}', '{$_POST['scoops']}')"; 

Auch die Verwendung von values vor dem Feld/Spaltennamen war falsch - es kommt nach den Spaltennamen!

Hinweis: Es wäre jedoch weitaus besser, vorbereitete Aussagen zu verwenden!

Ungeprüfte Beispiel prepared statements für diesen Anwendungsfall wäre vielleicht:

$sql = 'insert into `orders` (`cname`,`flavour`,`scoops`)' values(?,?,?); 
$stmt = $connection->prepare($sql); 
if($stmt){ 

    $name=$_POST['name']; 
    $flavour=$_POST['flavor']; 
    $scoops=intval($_POST['scoops']); 

    $stmt->bind_param('ssi',$name,$flavour,$scoops); 
    $result = $stmt->execute(); 
    echo $result ? 'OK' : 'Bad Foo!'; 
} 
+0

Ich habe noch keine vorbereiteten Aussagen erforscht. Gibt es ein gutes Tutorial oder einen Verweis, dem ich folgen kann? –

Verwandte Themen