出于学习目的,我正在尝试将数据从HTML表单插入到MySQL数据库,这是我为表单获得的代码:
<form action="newmovie.php" method="post">
<p>Titulo: <input type="text" name="movieTitle"> </p>
<p>Año: <input type="text" name="movieYear"> </p>
<p>Director: <input type="text" name="movieDirector"> </p>
<p>Protagonista: <input type="text" name =movieProtagonist> </p>
<input type="submit" class="button" value="Agregar">
</form>
所以,在同一个网页中,我检查是否正在执行POST:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
include("connectDB.php");
$mySQL=new MySQL();
$movieTitle=$_GET['movieTitle'];
$movieDirector=$_GET['movieDirector'];
$movieYear=$_GET['movieYear'];
$movieProtagonist=$_GET['movieProtagonist'];
echo "INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('$movieTitle','$movieDirector','$movieYear', '$movieProtagonist')";
$queryResult=$mySQL->query("INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('$movieTitle','$movieDirector','$movieYear', '$movieProtagonist')");
echo "$queryResult";
}
?>
因此,插入已完成但字段为空,这就是回显打印的内容:
INSERT INTO peliculas(titulo,director,year,protagonista)VALUES('','','','')
我的代码出错了什么?
答案 0 :(得分:2)
修复拼写错误
<p>Protagonista: <input type="text" name =movieProtagonist> </p>
将其更改为
<p>Protagonista: <input type="text" name="movieProtagonist"> </p>
将PHP更改为:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
include("connectDB.php");
$mySQL=new MySQL();
$movieTitle=$_POST['movieTitle'];
$movieDirector=$_POST['movieDirector'];
$movieYear=$_POST['movieYear'];
$movieProtagonist=$_POST['movieProtagonist'];
echo "INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('$movieTitle','$movieDirector','$movieYear', '$movieProtagonist')";
$queryResult=$mySQL->query("INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('$movieTitle','$movieDirector','$movieYear', '$movieProtagonist')");
echo "$queryResult";
}
?>
说明:
您可以使用HTTP GET或HTTP POST将表单提交到PHP脚本。您可以在表单中定义它。在您的表单中,您将其设置为通过POST发送它,但尝试使用$ _GET在php中检索它。
如果您需要发送URLS,那么Get只适用于从数据库中检索数据。获取变量就像这样传递
http://yourserver.com/yourscript.php?variable1=something&variable2=somethingElse
邮件隐藏在HTTP请求中(您没有在URL中看到它)。对于正在对数据库进行更改的任何请求,最好使用“post”。
您可以在此处详细了解差异: http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
答案 1 :(得分:1)
在PHP文件中而不是
$_GET
使用
$_REQUEST
当您在表单标记中使用method='post'
时,您的问题就会解决。
并且您通过$_GET
获取数据,用于获取方法get的数据。
始终使用
$_REQUEST
从表单中获取数据,因为它很常见 从get和post获取两个数据。
答案 2 :(得分:1)
使用$ _POST读取表单数据:
例如:$movieTitle=$_POST['movieTitle'];
答案 3 :(得分:1)
尝试以下代码,它将解决您的问题。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$movieTitle=$_POST['movieTitle'];
$movieDirector=$_POST['movieDirector'];
$movieYear=$_POST['movieYear'];
$movieProtagonist=$_POST['movieProtagonist'];
echo "INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('".$movieTitle."','".$movieDirector."','".$movieYear."', '".$movieProtagonist."')";
$queryResult=$mySQL->query("INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('".$movieTitle."','".$movieDirector."','".$movieYear."', '".$movieProtagonist."')");
echo "$queryResult";
}
&GT;
答案 4 :(得分:1)
<form action="newmovie.php" method="post">
由于您的表单方法是post,因此您需要使用
$movieTitle=$_POST['movieTitle'];
您也可以使用
$movieTitle=$_REQUEST['movieTitle'];
对于post和get都是,但这会导致不必要的开销
答案 5 :(得分:1)
由于method ='post'
Instead of $_GET['']
使用
$_POST['']
或
$_REQUEST['']