使用HTML / PHP POST后空字段?

时间:2013-10-22 11:05:43

标签: php html mysql

出于学习目的,我正在尝试将数据从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('','','','')

我的代码出错了什么?

6 个答案:

答案 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['']