2016-01-29 116 views
1

我有數組,其中可能有無限量的元素。我試圖將它們輸入到我的分貝,但它只輸入數組的前3個元素。 我的陣列看起來像這樣For循環只發布數組中的前3個元素 - PHP

array(4) { 
    ["ID"]=> 
    array(5) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(1) "2" 
    [2]=> 
    string(1) "3" 
    [3]=> 
    string(1) "4" 
    [4]=> 
    string(1) "5" 
    } 
    ["firstname"]=> 
    array(5) { 
    [0]=> 
    string(5) "Steve" 
    [1]=> 
    string(3) "Dan" 
    [2]=> 
    string(3) "Jim" 
    [3]=> 
    string(4) "Adam" 
    [4]=> 
    string(5) "James" 
    } 
    ["surname"]=> 
    array(5) { 
    [0]=> 
    string(5) "Smith" 
    [1]=> 
    string(6) "Colins" 
    [2]=> 
    string(6) "Knight" 
    [3]=> 
    string(5) "Lamar" 
    [4]=> 
    string(4) "Rays" 
    } 
    ["submit"]=> 
    string(5) "Enter" 
} 

這是我的for循環和SQL語句

$a[0] = $_SESSION['ID']; 
$a[1] = $_SESSION['firstname']; 
$a[2] = $_SESSION['surname']; 


for ($i = 0; $i<count($a); ++$i){ 
    $id = $_SESSION['ID'][$i]; 
    $fname = $_SESSION['firstname'][$i]; 
    $sname = $_SESSION['surname'][$i]; 

$query = "INSERT INTO orders(id, firstname, surname) VALUES('$id', '$fname', '$sname')"; 


if (mysqli_query($connection, $query)) { 
echo "New record created successfully"; 
} else { 
echo "Error: " . $query . "<br>" . mysqli_error($connection); 
} 
} 

這隻會發布每個數組的元素0,1,2。我怎樣才能改變它,所以它插入所有元素到我的數據庫?

+0

您正循環使用'$ a',它只有3個可見條目。不知道它應該從哪裏插入行。 –

+0

'$ a'數組的用途是什麼?除了錯誤的「count($ a)」之外,你從不使用它。 – Barmar

回答

2
for ($i = 0; $i<count($a); ++$i) 

這種循環會三次因爲$a陣列具有3項(ID,姓名,姓氏)。將count($a)更改爲count($a[0]),它應該可以工作。雖然這不正是最好的解決辦法(如果這三個陣列之一有什麼比別人多/項目少一些?)

+0

謝謝,這應該工作,因爲所有的陣列將有相同數量的元素 – SnowmanPusha

+0

你怎麼能這麼肯定?我想這個數組是從表單輸入的。如果有人更改表格併發送一些輸入信息會怎麼樣?你應該指望這個...... –

1

你循環通過$a數組有3項

嘗試此解決方案

$a[0] = $_SESSION['ID']; 
$a[1] = $_SESSION['firstname']; 
$a[2] = $_SESSION['surname']; 

$b = count($a[0]); 

for ($i = 0; $i<$b; ++$i){ 
    $id = $_SESSION['ID'][$i]; 
    $fname = $_SESSION['firstname'][$i]; 
    $sname = $_SESSION['surname'][$i]; 

$query = "INSERT INTO orders(id, firstname, surname) VALUES('$id', '$fname', '$sname')"; 


if (mysqli_query($connection, $query)) { 
echo "New record created successfully"; 
} else { 
echo "Error: " . $query . "<br>" . mysqli_error($connection); 
} 
}