0

フォーム データを構造化する方法は、while ループで作成することですが、作成されるたびにフォームは一意の ID を取得します。私の質問は、それらに個別にアクセスして、指定されたデータを MYSQL サーバーに更新する方法です。スクリプトの最後のコードで実行しようとしましたが、フォームに個別にアクセスする方法がわかりません

<?php 
        include 'user_data.php';
        include 'core.inc.php';

        $query = mysql_query("SELECT `post_text` FROM `posts`,`sub_posts` WHERE sub_posts.post_id = posts.id AND                sub_posts.user_id='$user_id'");

        while($row = mysql_fetch_array($query)){

          ?><a href="#" class="askedClick"><?php echo $row[post_text].'<br>'?></a>

          <form action="<?php $curent_file ?>" method="POST">
            <textarea name="answer_field" > </textarea><br />
            <input type="submit" value="Submit Answer">
            <input type="hidden" name="post_id" value="<?php echo $row['post_id']; ?>" />
         </form>

    <?php
        }//While Loop
    if (isset($_POST['answer_field']) && !empty($_POST['answer_field'])){   
        $answer = mysql_real_escape_string($_POST['answer_field']);
        $id = intval($_POST ['post_id']);
        $query = "UPDATE `sub_posts` SET `sub_answer`='$answer' WHERE `post_id`='$id'";
    }


?>
4

1 に答える 1

2

「送信」フィールドをクリックすると、単一のフォームのみが投稿されます。フォーム名自体は送信されません。代わりに、フォームが非表示フィールドとして対応する投稿 ID を配置します。

<input type="hidden" name="post_id" value="<?php echo $row['post_id']; ?>" />

そして後で:

$answer = mysql_real_escape_string ($_POST ['answer']);
$id = intval ($_POST ['post_id']);
$query = "UPDATE `sub_posts` SET `sub_answer`='{$answer}' WHERE `post_id`={$id}";

回答をクエリに入れる前に必ずエスケープする必要があり、ID が数値であることを確認してください。そうしないと、コードを SQL インジェクション攻撃にさらすことになります。

于 2013-02-16T00:55:38.447 に答える