2016-02-16 89 views
0

我想從表單發佈數據到SQL數據庫。 我真的不明白我在想什麼... 我嘗試了幾件事情,我設法讓它工作一次,但窗體只是添加了id,並且將其他字段留空。現在它根本不起作用。從表單發佈數據到SQL數據庫時出錯

我的形式是這樣的

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

<div class="form-group"> 
    <label for="title">Title</label> 
    <input type="text" class="form-control" id="title" placeholder="" value=""> 
</div> 

<div class="form-group"> 
    <label for="description">Description</label> 
    <textarea class="form-control" rows="3" id="description" value=""></textarea> 
</div> 

    <button type="submit" class="btn btn-default">Send</button> 
</form> 

,我的代碼是這樣

<?php 
    require("pdo.php"); 
    $_POST['title'] = ""; 
    $_POST['description'] = ""; 


    if (isset($_POST["submit"])){ 

    $title = $_POST['title']; 
    $description = $_POST['description']; 



    $sql = "INSERT INTO outfit (title, description) 
    VALUES('$title', '$description')"; 
    $statement = $pdo->prepare($sql); 

$statement->execute([ 
    'title' => $title, 
    'description' => $description 
]); 
}; 
?> 
+2

不少錯誤,並且這個'if(isset($ _ POST [「submit」])){...}'什麼都不會在那裏啓動。 *在這裏考慮「名稱」屬性*。 –

+2

而你沒有佔位符來綁定任何東西。 –

+2

您所有的輸入字段都缺少'name'屬性。 'id'不用於表單提交。 – Barmar

回答

0

的變化: -

  1. 提供name屬性的所有輸入字段。

  2. 要麼提供name and value屬性到按鈕,要麼檢查POST輸入字段(更可取)的數據值。

所以你的代碼會像下面: -

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

<div class="form-group"> 
    <label for="title">Title</label> 
    <input type="text" class="form-control" name = "title" id="title" value=""> 
</div> 

<div class="form-group"> 
    <label for="description">Description</label> 
    <textarea class="form-control" rows="3" name= "description" id="description" value=""></textarea> 
</div> 

    <button type="submit" class="btn btn-default">Send</button> 
</form> 


<?php 
error_reporting(E_ALL); // check all type of error 
ini_set('display_errors',1); // display those error 
require("pdo.php"); 
if (isset($_POST['title']) && isset($_POST['description'])){ // check actual input data not submit button 

    $title = $_POST['title']; 
    $description = $_POST['description']; 
    $sql = "INSERT INTO outfit (title, description) VALUES('$title', '$description')"; 
    $statement = $pdo->prepare($sql); 

    $statement->execute(['title' => $title,'description' => $description]); 
} 
?> 

注: - 檢查DB連接是你的責任。我不知道你在"pdo.php"有什麼代碼。祝你好運。

+0

非常感謝它現在工作得很好!我是一個初學者,我不太瞭解錯誤函數,但我會檢查PHP手冊中的內容......否則,爲了避免輸入,你會推薦使用htmlspecialchars函數還是mysqli_real_escape_string函數? – cassandra

+0

是的,你可以使用這些,以及爲什麼-ve標記。請告訴我你爲什麼這麼做(做這個的人?)。 –

+0

你可以使用mysqli_real_escape_string來防止SQL注入 –