我在尝试将数据从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进行编程的新手,所以错误可能是一点点
答案 0 :(得分: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; 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;);