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