如何遍历$ _POST数组并将数据发送到不同的MySQL表

时间:2012-12-29 21:54:46

标签: php mysql

我有一个将通过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 {}的字段转到教育表等。

1 个答案:

答案 0 :(得分: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;