2017-02-27 3 views
0

現在、私は、25以上のフィールドを持つフォームを持っています。これらのフィールドはすべて、投稿を取得してSQLデータベースに格納する単一のファイルに投稿します。私は、各ポスト値に変数を割り当てるのは非常に非効率的であることを発見しました。エイサーソリューションが必要です。ここでPDO SQL - 数十のフィールドを挿入

は私の例です:

/*Post Data*/ 
 
$val_1 = $_POST['val_1']; 
 
$val_2 = $_POST['val_2']; 
 
$val_3 = $_POST['val_3']; 
 

 
$query = $handler->prepare("INSERT INTO `database` (col_1, col_2, col_3) VALUES (:val_1, :val_2, :val_3)"); 
 
$query->execute([ 
 
    ':val_1' => $val_1, 
 
    ':val_2' => $val_2, 
 
    ':val_3' => $val_3 
 
]);

私は私のクエリは途方もなく長くならないように、ある種のループでこれを達成する方法がなければならないように感じるし、このような厄介なことになります。

+0

あなたは '$ _POSTのカウントと' str_repeat'を使用することができます'プレースホルダーを構築する。値をプレースホルダとマッチさせると、面倒なことになるかもしれません。 – chris85

+0

それぞれの '$ values = array(); $ query - > execute($ values); ' –

+0

名前を配列に入れます。配列をクエリに展開します。 '$ _POST'に対してバインドします。これを複雑にする理由はありません。 – tadman

答えて

2

単純な方法で:str_repeat

$query = $handler->prepare("INSERT INTO `database` (col_1, col_2, col_3) VALUES (?, ?, ?)"); 
$query->execute($_POST); 

あなたが例えば、あなたが必要な回数だけシンボルを繰り返すことができます:

$times = 20; // or sizeof($_POST); 
$str = str_repeat('?,', $times); 
$str = rtrim($str, ','); // remove last `,` 
+0

これは完全に完璧に機能しました。まさに私が探していたもの。 –

+0

「?」の繰り返しについては、私の更新を見てください。 –

+0

ありがとう、ありがとうございます。それが私に許されるときこれを正しいものとしてマークします。 –

関連する問題