1

我有一个将通过 POST 发送数据的表单。我希望这些数据根据 POST“名称”转到不同的 MySQL 表。

到目前为止,我有一个表单字段的 while 循环,它将以以下格式命名每个输入:“name”{}$id。我认为使用 {} 作为分隔符然后我可以使用 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)从中你将能够弄清楚如何处理它们。

注意。为了安全起见,我还会确保只使用预期的发布变量

$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 回答