2016-03-24 6 views
0

SQL照会で$_GET$_POSTの両方を使用しようとしています。以下は私のコードです

<?php 
    $assignment = mysql_real_escape_string($_GET['name']); 
    echo "$assignment <br>"; 

    if (isset($_POST['add'])) { 

     $user = $_POST['username']; 
     $text = $_POST['comment']; 

     $query = "INSERT INTO comments (user, text, assignment) VALUES ('$user', '$text', '$assignment')"; 
      mysql_query($query) or die('Error, comment failed to post'); 
    } 
?> 

<h1>Add Comment</h1> 
<form action="log_entry.php" method="post"> 
    Name:<br/> 
    <input type="text" name="username" value="" /> 
    <br /><br /> 
    Comment:<br /> 
    <textarea style="height:200px;" type="text" name="comment" value="" ></textarea> 
    <br /><br /> 
    <input type="submit" name="add" value="Add Comment" /> 
</form> 

しかし、$assignment変数はクエリでは機能しません。クエリが行われる前に正しくエコーされますが、の後のテーブル内の値は空です。この原因は何ですか?代わりに結合しようとしているの

+1

を' $ _POST'は、その後、あなたのURLは、あなたが望むものを含める必要があります例えば、 'log_entry.php?name = something'のように、GETのために。このURLに投稿すると、 '$ assignment'は' something'になります。 –

+0

URLは既にその情報を持っています – Ankush

+0

** 'GET' **引数は、フォームの*' action' *属性でURL *に指定する必要があります。* –

答えて

0

は、GETとPOSTは、非表示の入力フィールドを使用します。あなたは `$ _GET`との両方を使用する場合は

<?php 
    $assignment = mysql_real_escape_string($_POST['name']); // Name is now in POST data, so swap this 
    echo "$assignment <br>"; 

    if (isset($_POST['add'])) { 

     $user = $_POST['username']; 
     $text = $_POST['comment']; 

     $query = "INSERT INTO comments (user, text, assignment) VALUES ('$user', '$text', '$assignment')"; 
      mysql_query($query) or die('Error, comment failed to post'); 
    } 
?> 

<h1>Add Comment</h1> 
<form action="log_entry.php" method="post"> 
    <!-- Add hidden input to carry the name --> 
    <input type="hidden" name="name" value="<?php echo $_GET['name']; ?>"/> 
    <!-- Rest of the form is the same --> 
    Name:<br/> 
    <input type="text" name="username" value="" /> 
    <br /><br /> 
    Comment:<br /> 
    <textarea style="height:200px;" type="text" name="comment" value="" ></textarea> 
    <br /><br /> 
    <input type="submit" name="add" value="Add Comment" /> 
</form> 
+0

これは機能します。しかし、これを行う正しい方法か、DaveとDarwinがコメントに示唆したことをすればいいですか? – Ankush

+0

私の意見はこれが正しい方法だと思っていますが、確かにわかりません。いくつかのフレームワークでは、そのようなことをするとエラーが発生する可能性がありますが、すべてのカスタムコードが壊れていないことがわかります。 –

関連する問題