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>

したがって、同じWeb ページで、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 (タイトル、監督、年、主人公) 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 で取得しようとしていました。

Get は、URL を送信する必要があり、データベースからデータを取得する場合にのみ使用する必要がある場合に適しています。Get変数はこのように渡されます

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

post は HTTP リクエストで非表示になります (URL には表示されません)。DB に変更を加える要求には、'post' を使用することをお勧めします。

違いの詳細については、こちらをご覧ください: http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

于 2013-10-22T11:10:35.737 に答える
1

$_POST を使用してフォーム データを読み取ります。例:$movieTitle=$_POST['movieTitle'];

于 2013-10-22T11:09:53.330 に答える
1

代わりにPHPファイルで

$_GET

使用

$_REQUEST

method='post'in the form タグを使用しているため、問題は解決します。そして、$_GETget メソッドのデータを取得するために使用されるデータを取得しています。

$_REQUESTget と post から両方のデータを取得するのが一般的であるため、常に を使用してフォームからデータを取得します。

于 2013-10-22T11:08:53.033 に答える
1

method='post' 以来

Instead of $_GET['']

どちらかを使用

$_POST['']

また

$_REQUEST['']
于 2013-10-22T11:59:48.160 に答える
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">

フォームメソッドは投稿であるため、使用する必要があります

$movieTitle=$_POST['movieTitle'];

代わりに使用することもできます

$movieTitle=$_REQUEST['movieTitle'];

post と get の両方で使用できますが、これにより不要なオーバーヘッドが発生します

于 2013-10-22T11:13:06.860 に答える