0

これは「ベスト プラクティス」/「最も効率的な」質問です。大きなフォーム (20 以上のフィールド) があります。1 つの大きな 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 変数を書き続ける必要があり、疲れています。

2 番目の質問: エラーが発生した場合にこのデータを保持する最善の方法は何ですか? 現状では、すべてを $_SESSION (入力ごとに 1 つのセッション変数) に保持し、エラー メッセージとともにエラーが発生した場合は、フォーム ページにリダイレクトします。次に、各 $_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 に答える