0

配列から要素の名前を送信をクリックするたびに、データベースに保存されたときに変更に投票しています。クリックした要素ではなく、現在エコーされた要素の後に表示される要素がデータベースに入力されます。クリックした配列の要素をデータベースに保存する方法について何か提案はありますか? 私はそれを理解できないようです。

使用してみましたがlistsunshiftそれでも同じ結果が得られます。

エコーがフォームの値に対して example2 on を示しているとしましょう。example2 をクリックすると、example1 がデータベースに保存されます。これを修正する方法がわかりません。助けてくれてありがとう。

これが私のコードです:

私が使用しているアレイのセットアップ:

$array = array("example1","example2","example3");
shuffle($array);
foreach($array as $random);

<?php echo array_pop($random);?>

HTML:

   <tbody>
         <tr>
                <form action="Voting_action.php" method="post">
            <td>
                <input type="submit" class="buttontable1" value="<?php echo $random ?>" name="name"/>
            </td>
                </form>
          </tr>
    </tbody>

PHP: アクション

$mysqli = new mysqli("", "", "", "");
if ($mysqli->connect_error) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_error . ") " . $mysqli->connect_error;
}
if (!$mysqli->query("INSERT INTO table(id, name, votes) VALUES (id, '".$random."', '".$votes."')")) {
    echo "Multi-INSERT failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
4

1 に答える 1

0

HTML フォームは、name="name" を使用してランダム キーを送信します (それ自体が混乱を招きます)。

$_POST['name']notを介してその変数にアクセスします$random

将来このような問題が発生した場合、最初の例では常に

var_dump($_POST);

フォームハンドラーで、使用できる変数と、それらが運ぶ値を確認します。

Ps db クエリでフィルター処理されていない値とエスケープされていない値を使用した方法では、SQL インジェクション攻撃にさらされる可能性があります。Mysqli の準備されたステートメントを調べて、この問題を回避してください。

于 2013-04-06T16:46:46.650 に答える