2016-02-16 5 views
0

Я пытаюсь отправить данные в базу данных SQL из формы. Я действительно не понимаю, чего мне не хватает ... Я пробовал несколько вещей, которые мне удалось заставить работать, но форма только добавляла идентификатор, и он оставлял остальные поля пустыми. Теперь это не работает.Ошибка при отправке данных в базу данных 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

Все ваши поля ввода не имеют атрибутов «имя». '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]); 
} 
?> 

Примечание: - проверка подключения к БД ваша ответственность. Я не знаю, какой код у вас есть в "pdo.php". Удачи.

+0

Спасибо, что он отлично работает сейчас! Я новичок, я действительно не понимаю функции ошибок, но я проверю руководство PHP для этого ... В противном случае, чтобы избежать ввода, вы бы рекомендовали использовать функцию htmlspecialchars или функцию mysqli_real_escape_string? – cassandra

+0

Да, вы можете использовать их, и почему -ve маркировки. Скажите, пожалуйста, почему вы это сделали (тот, кто это сделал?). –

+0

вы можете использовать 'mysqli_real_escape_string', чтобы предотвратить« SQL Injection » –

Смежные вопросы