2013-02-27 2 views
-2

У меня есть массив со 100 значениями. Я хочу вставить первые 10 значений в первую строку в таблице базы данных, т.е. первые 10 значений (col1,col2,...col10) представляют 10 столбцов в таблице db. И я хочу вставить следующие 10 (11-20) во вторую строку. Итак, как можно перебрать этот конкретный массив?Вставить значения в базу данных из массива

я использовал, если пункт, как если ($ ключ% 10 == 0)

+0

Ват ВГА у пытался ?? –

+1

Я использовал предложение if, например if ($ key% 10 == 0) – DeDav

+0

Что случилось с if ($ key% 10 == 0)? – hek2mgl

ответ

6
$my_array = array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b',); 

$splited_array = array_chunk($my_array, 10); 

foreach ($splited_array as $new_array) { 

    print_r($new_array); 
    // insert a new row with value of $new_array 
} 
+0

Хороший ответ +1 :) – hek2mgl

+0

Очень хороший ответ 1+ :) –

0

Попробуйте это:

$res = array(); 
$row = 0; 
for($i=0;$i<count($array);$i++){ 
    if($i % 10 == 0 && $i != 0){ 
     $row++; 
    } 
    $res[$row][] = $array[$i]; 
} 

echo "<pre>"; 
print_r($res); 

foreach($res as $val){ 
    $col1 = $val[0]; 
    $col2 = $val[1]; 
    ..... //// so on 
    $col10 = $val[9]; 

    Insert into databse 
} 
+0

Спасибо за ответ .. i wil update u результаты ... – DeDav

0
//I assume you get this by magic 
$inarray = array(...) 

//create your command and specify your bound parameters 
$stmt = $dbh->prepare("INSERT INTO table (c1, c2, cn..., c10) VALUES (:c1, :c2, ..., :c10)"); 
$stmt->bindParam(':c1', $c1); 
$stmt->bindParam(':c2', $c2); 
//... 
$stmt->bindParam(':c10', $c10); 

//loop over the array, hopping ten items at a time 
for ($i = 0; $i < 100; $i += 10) 
{ 
    // update the value of the bound parameter 
    $c1 = $inarray[$i + 0]; 
    $c2 = $inarray[$i + 1]; 
    //... 
    $c10 = $inarray[$i + 9]; 
    //execute the insert 
    $stmt->execute(); 
} 
Смежные вопросы