2016-04-30 4 views
0

私は仕事に関するいくつかの基本的な質問をしたフォームを手に入れて、その時に一緒にいた同僚。私がしたいのは、存在するすべての同僚がデータベースに行を入力していることです。他のすべての詳細はwork_id(人物の識別子)以外は同じです。私のコードは、以下の空workIDフィールド1つのフィールドが変更されたフォームデータから複数の行を入力する方法

<?php 
require_once('includes/dbconnect.php'); 

$varWorkID = $_POST['workid']; 
$varDate = $_POST['date']; 
$varType = $_POST['type']; 
$varSuper = $_POST['supervisor']; 
$varReference = $_POST['reference']; 

//Remove last part of array as extra 1 sent through by form 
$workID = array_pop($varWorkID); 

for ($i=0; $i < count($workID); $i++) 
{ 
    mysqli_query($conn,"INSERT INTO searches (workid,date,type,super,reference) VALUES('".$workID."','".$varDate."','".$varType."','".$varSuper."','".$varReference."')"); 
} 
echo "Completed"; 

私はかなり近いんだけど、私はただの各作業IDのそれぞれに移入するworkidを取得する必要があると思うと、DBへの1行を提出しているようです従業員は存在します。

どのような援助が大幅にあなたがループfor ($i=0; $i < count($workID); $i++)に入る前に、ここでの問題は、あなたが$workID = array_pop($varWorkID);を呼んでいるということですので、PHPインタプリタは、あなただけは、1つの要素の長さを反復処理したいと考えて

+0

このコードは、SQLインジェクションに対して非常に脆弱です。準備文を使用することを検討してください。 –

+1

'var_dump($ varWorkID);'を実行し、あなたが得ているものを見てください。 –

+0

'0 '=> string(5)" AB123 "[1] =>" CD456 "[2] =>文字列(0)" "} – JJMillwall

答えて

1

を高く評価しました。あなたが実際にやりたかったのは、配列の中の要素をポップしていて、ループ内にはのループでした。

<?php 
require_once('includes/dbconnect.php'); 

$varWorkID = $_POST['workid']; 
$varDate = $_POST['date']; 
$varType = $_POST['type']; 
$varSuper = $_POST['supervisor']; 
$varReference = $_POST['reference']; 


// iterate over the count of the whole array $varWorkID = $_POST['workid'] 
for ($i=0; $i < count($varWorkID); $i++) 
{ 
    // now pop off the array inside the loop 
    //Remove last part of array as extra 1 sent through by form 
    $workID = array_pop($varWorkID); 
    mysqli_query($conn,"INSERT INTO searches (workid,date,type,super,reference) VALUES('".$workID."','".$varDate."','".$varType."','".$varSuper."','".$varReference."')"); 
} 
echo "Completed"; 

今私はあなたが本当に別の関数array_popを呼び出すか、あなたはすでにインデックス$iへの反復の参照を持っているとき、スタック$workIDに別の変数を投げるの費用を必要としないので、@Dima Fitiskin's commentは、より良いアプローチを提案していると思いますループ内。

<?php 
require_once('includes/dbconnect.php'); 

$varWorkID = $_POST['workid']; 
$varDate = $_POST['date']; 
$varType = $_POST['type']; 
$varSuper = $_POST['supervisor']; 
$varReference = $_POST['reference']; 


// iterate over the count of the whole array $varWorkID = $_POST['workid'] 
for ($i=0; $i < count($varWorkID); $i++) 
{ 
    mysqli_query($conn,"INSERT INTO searches (workid,date,type,super,reference) VALUES('".$varWorkID[$i]."','".$varDate."','".$varType."','".$varSuper."','".$varReference."')"); 
} 
echo "Completed"; 
+0

ありがとうございました!それはトリックを行った – JJMillwall

関連する問題