2016-12-04 153 views
0

我想插入到數據庫的表單數據,但它不工作,我已經添加了下面的代碼。請檢查並告知我問題是什麼。由於刪除和搜索查詢正在運行,但插入是唯一不起作用的查詢。謝謝數據沒有插入數據庫

<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

移動到__prepared statements__ –

+2

定義的變量在不同的CASE和拼寫比在SQL〜'$ Flavor'和使用' $ FLAVOUR' – RamRaider

回答

0

您必須從窗體提供名稱,味道& scopps。即使你提供了,但你的查詢仍然無效。因爲您的形式的輸入鍵是小寫字母,並且您在使用首字母大寫字母的條件下檢查它。所以試試吧

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

您在兩次使用了值。請從糾正這個

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

要:

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

嘗試過,但仍然沒有插入數據到數據庫 –

+0

您必須從表單中提供名稱,風味&scopps。即使你提供了,但你的查詢仍然無效。因爲您的形式的輸入鍵是小寫字母,並且您在使用首字母大寫字母的條件下檢查它。所以試試 'if(isset($ _ POST ['name'])&& isset($ _ POST ['flavor'])&& isset($ _ POST ['scoops'])){... }' –

+0

Got它。現在工作 –

0

如你不消毒用戶輸入,也不是您使用prepared statements你可以簡單地做以下,並避免拼寫/大小寫錯誤:

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

另外,在字段/列名不正確之前使用values - 它出現在列名之後!

注意:然而,使用預先準備好的語句會好得多!的prepared statements用於該用途的情況下

未經測試的例子是,也許是:

$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

我還沒有探索準備好的陳述。有一個很好的教程或參考,我可以遵循它嗎? –