1

出于学习目的,我正在尝试将数据从 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";    
    }
?>

因此,插入已完成,但字段为空,这就是 echo 打印的内容:

INSERT INTO peliculas (titulo,director,year, protagonista) VALUES ('','','', '')

我的代码做错了什么?

4

6 回答 6

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 中检索它。

如果您需要发送 URL,Get 非常适合,并且只应用于从数据库中检索数据。获取变量是这样传递的

http://yourserver.com/yourscript.php?variable1=something&variable2=somethingElse

并且 post 隐藏在 HTTP 请求中(您在 URL 中看不到它)。对于任何对数据库进行更改的请求,最好使用“发布”。

您可以在此处阅读有关差异的更多信息:http: //blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

于 2013-10-22T11:10:35.737 回答
1

在 PHP 文件中,而不是

$_GET

使用

$_REQUEST

当您使用method='post'表单标签时,您的问题将得到解决。您正在获取$_GET用于获取方法 get 的数据的数据。

始终使用$_REQUEST从表单获取数据,因为从 get 和 post 获取数据是很常见的。

于 2013-10-22T11:08:53.033 回答
1

使用 $_POST 读取表单数据:示例:$movieTitle=$_POST['movieTitle'];

于 2013-10-22T11:09:53.330 回答
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";    
}

?>

于 2013-10-22T11:12:13.353 回答
1
<form action="newmovie.php" method="post">

由于您的表单方法是 post,因此您需要使用

$movieTitle=$_POST['movieTitle'];

您也可以使用

$movieTitle=$_REQUEST['movieTitle'];

对于 post 和 get 但这会导致不必要的开销

于 2013-10-22T11:13:06.860 回答
1

由于方法='post'

Instead of $_GET['']

使用任何一个

$_POST['']

或者

$_REQUEST['']
于 2013-10-22T11:59:48.160 回答