0

这是一个“最佳实践”/“最有效”的问题。我有一个大表格(20 多个字段)。将 post 形成一个大型 MySQL 表。

不,我不能分解表格,不,我不能分解桌子(它被用来保存测量值);由管理员销售代表使用。另外,我不想使用 Javascript。

我知道我可以做到这一点:HTML

<form action="etc.php" method="post">    
<input type="text" name="neck" value="">
<input type="text" name="arm" value="">
<input type="text" name="back" value="">
<input type="text" name="chest" value="">
<input type="text" name="legs" value="">
<submit button>

PHP

<? 
$_POST['neck']; 
$_POST['back']; 
$_POST['arm']; 
$_POST['chest']; 
$_POST['legs']; 
$postMeasurements = "INSERT INTO measurements (etc, etc, etc,) VALUES (etc, etc, etc) WHERE etc='etc'; query ($postMeasurements);
?>

但是有更快的方法吗?不必声明每个单独的帖子,只需运行一个循环,将所有数据发布并插入到表中。即使数据与表列的顺序相同,或者输入名称必须与表列名相同,我也可以;我只是累了,必须继续将所有这些 $_POST 变量写入。

第二个问题:如果出现错误,保存这些数据的最佳方法是什么?就目前而言,我将所有内容保存在 $_SESSION 中(每个输入一个会话变量),然后如果出现错误并显示错误消息,则重定向回表单页面。然后将每个 $_SESSION 变量作为输入值回显。

谢谢,

4

3 回答 3

1

如果字段作为字段名称的确切名称。帖子只能有字段,没有别的

 //if $_POST has the form then, also this is very unsafe because there is no injection prevention too

 $sql = "INSERT INTO table (" . implode(",", array_keys($_POST)) . ")"
      . "VALUES ('" . implode("','", array_values($_POST)) . "')";
于 2013-06-21T06:35:24.497 回答
0

您可以在查询中直接使用 $_POST['foo'] ,无需声明 :) 。

保存数据可以在会话中,也可以在内联缓存中,如果您有大量数据,最好在服务器中使用一些缓存,并在表单加载时,它会根据 SESSION_ID 从服务器中检索数据

于 2013-06-21T06:36:20.213 回答
0

将页面发布到自身。

然后做这样的事情:

if($_SERVER["REQUEST_METHOD"] == "POST"){
    // validate and insert post data
    header("Location: $successUrl");
    exit();
}
?>
<form action="etc.php" method="post">    
    <input type="text" name="neck" value="<?= $_POST["neck"]?>">
    <input type="text" name="arm" value="<?= $_POST["arm"] ?>">
    ....
于 2013-06-21T06:56:39.740 回答