2017-09-06 9 views
0

私は複数のエントリーを提出するフォームを持っており、それらのエントリーを単一のSQLステートメントに組み合わせる必要があります。 [送信]ボタンをクリックすると、「ファーストネーム」、「姓」などは、独自の配列に入れますので、私はこのようなものがあります:複数の配列をフォーム提出(PHP)から結合する方法は?

$firstname = array(
'1' => john, 
'2' => mike, 
'3' => pete 
); 

$lastname = array(
'1' => smith, 
'2' => jones, 
'3' => ross 
); 

を私は

の出力を持つようにこれらを結合したいです は

「ジョン・スミス、マイク・ジョーンズ、ピート・ロス」(多分3番目の配列?)私は私の構文を許し

"INSERT INTO database_table 
(firstname, lastname) 
Values ($firstnames, $lastnames)" 

ようSQLSRVクエリを作ることができるように、それは長い1日だったし、私がしてきましたこれを理解しようと壁に頭を打つ(プラス私はnewbです)。

+0

なぜ彼らは1つのクエリでなければなりませんか?データベースの各行は、独自のクエリである必要があります。おそらく、動的になるループ上にあります。すべての挿入が一度に実行されるように、バインドパラメータをクエリにループすることができます。あなたは確かに準備されたステートメントを使用しているはずです。 – GrumpyCrouton

答えて

1

挿入する予定の値ペアの数を確認し、適切な数を生成する必要があります。ここでは(これはSQLインジェクションにあなたが脆弱なままに正確にはこれを使用しないでください)基本的な例である:

$firstname = array(
    '1' => john, 
    '2' => mike, 
    '3' => pete 
); 

$lastname = array(
    '1' => smith, 
    '2' => jones, 
    '3' => ross 
); 

$query = ' 
    INSERT INTO database_table (firstname, lastname) 
    VALUES 
'; 
$value_array = array(); 

foreach ($firstname as $index => $value) { 
    $value_array[] = sprintf('("%s","%s")', $value, $lastname[$index]); 
} 

$query .= implode(', ', $value_array); 

echo $query; 

例:https://eval.in/856592

あなたは何をすべき文字列を生成するために、上記のようなものを使用しています

foreach ($firstname as $index => $value) { 
    $value_array[] = sprintf('(?, ?)'); 
} 

次に、別のループの後に適切なパラメータをバインドします。これははるかに安全です。

準備された文について詳しく読む:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

あるいはさらに良い:http://php.net/manual/en/pdo.prepared-statements.php

+0

ありがとう、newbであり、私は配列を完全に混乱させていないし、sprintf()で全く作業していない。私は、あなたがレイアウトしたこの基盤を使って何かを得ることができるはずです、ありがとう! – ddub74012

関連する問題