2015-01-05 5 views
-1

У меня проблема с попыткой сохранить данные из html-формы в базу данных SQL. Я видел несколько других сообщений, но ничего не помогло. Вот код формы:Php + данные из формы в базу данных

<?php 

    require("connection.php"); 
echo '<html> 
<title>Υποβολή Βιογραφικού</title> 
</head></head> 
<body> 
    <form method='Post' action='insert.php'> 
    Όνομα:<br> 
    <input type="text" name="firstname"> 
    <br> 
    Επώνυμο:<br> 
    <input type="text" name="lastname"> 
    <br> 
    Ηλικία:<br> 
    <input type="number" name="age"> 
    <br> 
    Σπουδές:<br> 
    <textarea name="education" rows="10" cols="30"></textarea> 
    <br> 
    Επαγγελματική Εμπειρία:<br> 
    <textarea name="experience" rows="10" cols="30"></textarea></textarea> 
    <br> 
    Ξένες Γλώσσες:<br> 
    <textarea name="languages" rows="5" cols="10"></textarea> 
    <br> 
    Δυνατότητα Μετακίνησης:<br> 
    <input type="text" name="travelling"> 
    <br> 
    <br> 
    <input type='submit' value='Υποβολή Βιογραφικού' /> 
    </form> 




</body> 
</html>'; 
?> 

И это код, который сохраняет данные в базу данных.

<?php 

include("connection.php"); 

$firstname=$_POST["firstname"]; 
$lastname=$_POST["lastname"]; 
$age=$_Post["age"]; 
$education=$_Post["education"]; 
$experience=$_Post["experience"]; 
$languages=$_Post["languages"]; 
$travelling=$_Post["travelling"]; 

mysql_query("INSERT INTO cv (Onoma, Epwnimo, Hlikia, Spoudes, 
EpagelmatikiEmpeiria, KsenesGlwsses, DinatotitaMetakinisis) 
VALUES 
('".$firstname."', '".$lastname."', '".$age."', '".$education."', 
'".$experience."', '".$languages."', '".$travelling."')"); 
header("Location:index.php"); 

?> 

Я новичок в программировании на PHP, так что ошибка может быть что-то немного

+1

Sidenote: Вам не нужно выделять полный HTML-код. Просто выполните < 'то ваш HTML. –

+2

** предупреждение ** ваш код очень уязвим для SQL-инъекций! –

+0

Это может помочь описать, что вы на самом деле наблюдаете при запуске своего кода. Некоторые поля сохраняются в БД, но не другие? Неверные данные сохраняются? и т. д. – rchang

ответ

1

Вот одна из проблем. Все ваши $_Post должны быть в верхнем регистре $_POST, так как это суперглобал.

Подробнее об этом по адресу:

Плюс, ваш настоящий код открыт для SQL injection. Используйте mysqli with prepared statements, или PDO with prepared statements, они намного безопаснее.

Я также не знаю, почему вы так эхом отзываете HTML.

Просто сделайте <?php require("connection.php"); ?> тогда ваш HTML, так что вы не будете иметь дело с цитатами вопросов, где вы используете одиночные кавычки, чтобы эхо с ...

затем с их внутрь <form method='Post' action='insert.php'> и

<input type='submit' value='Υποβολή Βιογραφικού' />

который, как заявил Марк в своем ответе, приведет к ошибке синтаксического анализа.

Чтобы вернуться к использованию require("connection.php");. Если вы не запрашиваете внутри этой страницы и что ваш запрос находится в другом файле в качестве обработчика действий, то вам это не нужно, и его можно безопасно удалить и просто использовать стандартный HTML-код не-echo'd.

Вы делаете это в том, что, кажется, «insert.php» файл include("connection.php");


Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Также добавьте or die(mysql_error()) к mysql_query().

Sidenote: Отчеты об ошибках должны выполняться только при постановке и никогда не производить.

+0

вы неправдоподобно терпеливы –

+1

@ FélixGagnon-Grenier Да, я Феликс. Должен быть во мне кактусом. –

1

Основные строки PHP: Вы не можете использовать те же кавычки внутри строки, как вы с помощью DEFINE строку:

echo '<html> 
    ^---start of string 
<title>Υποβολή Βιογραφικού</title> 
</head></head> 
<body> 
    <form method='Post' action='insert.php'> 
       ^---end of string 
    Όνομα:<br> 

Таким образом, вы делаете эквивалент

echo 'foo' Post 

который является синтаксической ошибкой.

Существует абсолютно NO Причина использования многострочного эхо таким образом. У вас нет переменных в коде, нет ничего «динамического» в html. так просто выйти из режима PHP:

<?php 
    require ... 
?> 
<html> 
etc... 

Теперь вам не придется беспокоиться об ошибках синтаксиса PHP, так как вы не «с помощью» PHP больше при выводе, что HTML.

+0

Хороший улов на котировках Марка. –

0

Сделать почтой в виде метода все прописные буквы! POST и все $ _Post должны быть в верхнем регистре, например $ _POST Также попробуйте удалить все двойные кавычки и периоды, как показано ниже.

mysql_query ("INSERT INTO сорта (Онома, Epwnimo, Hlikia, Spoudes, EpagelmatikiEmpeiria, KsenesGlwsses, DinatotitaMetakinisis) ЗНАЧЕНИЯ ('$ ПгвЬЫате', '$ LastName', '$ возраст', '$ образование', '$ experience', '$ languages', '$ travel') ");

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