1

POSTを介してデータを送信するフォームがあります。そのデータをPOSTの「名前」に基づいて異なるMySQLテーブルに移動させたい。

これまでのところ、各入力に「name」{}$idの形式で名前を付けるフォームフィールドのwhileループがあります。{}を区切り文字として使用すると、explode()を使用し、条件ステートメントを使用して、データを移動するテーブルを選択できると思いました。

これはこれを行うための最良の方法ですか?たとえばPOSTでforeachを使用すると、名前ではなく値が返されるだけなので、私が抱えている問題は名前の呼び出しでもあります。以下のコードを同封しました。

<?php while ($cred = mysql_fetch_array($credentials_process)) { ?>
    <div class="edit-profile-background-inputs">
        <span><input type="text" name="cred{}<?php echo $cred['id']; ?>" value="<?php echo $cred['credentials']; ?>" /></span>
        <span style="margin-left:10px;"><a href="<?php echo "background.php?cred=".$cred['id']; ?>">Remove</a></span>
    </div>
    <?php } ?>

クレデンシャルテーブルに移動するにはcred{}という名前のフィールドが必要であり、教育テーブルに移動するにはedu{}という名前のフィールドが必要です。

4

1 に答える 1

2
<input type="text" name="cred[<?php echo $cred['id']; ?>]"...
<input type="text" name="edu[<?php echo $edu['id']; ?>]"...

PHPで

$insert=array();
foreach ($_POST['cred'] as $k=>$v)
{
    $insert[$k]=mysql_real_escape_string($v); // yes I know mysql is being depreciated
}

 $sql='INSERT INTO cred ('. implode(',', array_keys($insert)).') VALUES ('. implode(',', $insert).');

繰り返します$_POST['edu']

結果セットが、同じキーで複数の行を出力するようなものである場合

$i=0;
while ($cred = mysql_fetch_array($credentials_process)) { ?>
    <input type="text" name="cred[$i][<?php echo $cred['id']; ?>]"...
    ...
    $i++;
}

それからあなたprint_r($_POST)がそれらに対処する方法を理解することができるでしょう。

NB。安全のために、予想される投稿された変数のみが使用されるようにします

$allowed=array('cred_id', 'cred_something', 'etc');

foreach ($_POST['cred'] as $k=>$v){
    if (!in_array($k, $allowed)) continue;
于 2012-12-29T22:01:34.793 に答える