从表单到数据库的Php +数据

时间:2015-01-05 18:31:37

标签: php html sql database forms

我在尝试将数据从html表单保存到SQL数据库时遇到问题。我看到了其他一些帖子,但没有任何帮助。 这是表格代码:

<?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进行编程的新手,所以错误可能是一点点

3 个答案:

答案 0 :(得分:1)

这是其中一个问题。您的所有$_Post必须为大写$_POST,因为它是一个超全局。

更多相关内容:

另外,您目前的代码向SQL injection开放。使用mysqli with prepared statementsPDO with prepared statements他们更安全

我也不知道为什么你会这样回应HTML。

只需执行<?php require("connection.php"); ?>然后再使用您的HTML,这样您就不必处理引号问题,而您只需使用单引号回复...

然后将它们放在<form method='Post' action='insert.php'>

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

正如Marc在他的回答中所说,

会导致解析错误。

返回使用require("connection.php");。如果您没有在该页面内查询,并且您的查询在另一个文件中作为您的操作处理程序,那么您就不需要它并且可以安全地删除它并且只使用标准的非回显&HTML; HTML

你正在做什么似乎是&#34; insert.php&#34;档案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()

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分: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语法错误,因为您在输出该html时不再“使用”PHP。

答案 2 :(得分:0)

将表单方法中的Post全部大写! POST和所有$ _Post应该像$ _POST一样大写 同时尝试删除所有双引号和句点,就像我在下面所做的那样。

mysql_query(&#34; INSERT INTO cv(Onoma,Epwnimo,Hlikia,Spoudes, EpagelmatikiEmpeiria,KsenesGlwsses,DinatotitaMetakinisis) VALUES (&#39; $ firstname&#39;,&#39; $ lastname&#39;,&#39; $ age&#39;,&#39; $ education&#39;, &#39; $ experience&#39;,&#39; $ languages&#39;,&#39; $ travel&#39;)&#34;);