这是一个“最佳实践”/“最有效”的问题。我有一个大型(20多个字段)。将帖子发布到一个大的MySQL表中。
不,我不能打破表格,不,我不能打破桌子(它用于保持测量);由admin销售代表使用。另外,我不想使用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变量作为输入值回显。
谢谢,
答案 0 :(得分: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)) . "')";
答案 1 :(得分:0)
您可以在查询中直接使用$ _POST ['foo'],无需声明:)。
保存数据可以是会话,也可以是内联缓存,如果你有大量数据,最好在服务器中使用一些缓存,并在表单上载,它会根据SESSION_ID从服务器检索数据
答案 2 :(得分: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"] ?>">
....