2015-06-01 3 views
-1

у меня есть массив как этотcodeigniter: как вставить несколько значений массива в базу данных mysql за один раз?

array(3) { 
    ["address"] => array(3) { 
    [0] => string(9) "Address 1" 
    [1] => string(9) "Address 2" 
    [2] => string(9) "Address 3" 
    } 
    ["number"] => array(3) { 
    [0] => string(3) "123" 
    [1] => string(3) "456" 
    [2] => string(3) "789" 
    } 
    ["state"] => string(3) "usa" 
} 

Я хочу, чтобы вставить данные массива в моей таблице базы данных. поэтому, я надеюсь, что у меня есть массив данных, которые будут введены в базу данных, как это

id | address | number | state 
---------------------------------- 
1 | Address 1 | 123 | usa 
2 | Address 2 | 456 | usa 
3 | Address 3 | 789 | usa 

как вставить данные массива в таблицу базы данных, как, что в одно время? мой массив динамически, количество массивов может быть изменено в любое время.

+0

1) написать вставку с использованием расширенного синтаксиса MySQL,. 2) используйте цикл и вставьте отдельные записи, пока не пройдете через массив. –

+0

@MarcB вы можете объяснить, как сделать цикл? – zelfix

+0

- это массив из $ _POST? –

ответ

1

Если использовать существующий массив

for($i = 0;$i < count($arr["address"]); $i++) 
    $this->db->insert('TABLE', 
     array("address" =>$arr["address"][$i], 
      "number" => $arr["number"][$i], 
      "state" =>$arr["state"])"); 

Или создать новый массив и сделать один пакетный вставить

for($i = 0;$i < count($arr["address"]); $i++) 
    $batch[] = array("address" =>$arr["address"][$i], 
      "number" => $arr["number"][$i], 
      "state" =>$arr["state"])"); 
$this->db->insert_batch('TABLE', $batch); 
-1

только один путь: петля

так:

$arr=array(1=>5,2=>8,3=>14);//a simple array for example 
    for($i=0;$i<$ARRAYMAX;$i++){ 
     mysql_query("insert into Table1(x) values($arr[$i])"); 
    } 

$arr =array(3) { 
    ["address"] => array(3) { 
    [0] => string(9) "Address 1" 
    [1] => string(9) "Address 2" 
    [2] => string(9) "Address 3" 
    } 
    ["number"] => array(3) { 
    [0] => string(3) "123" 
    [1] => string(3) "456" 
    [2] => string(3) "789" 
    } 
    ["state"] => string(3) "usa" 
} 


for($i=0;$i<$ARRAYMAX;$i++){ 

    mysql_query("insert into TABLE(address,number,state) 
    values($arr[0][$i],$arr[1][$i],$arr[2][$i])"); 
} 

попробовать это, я надеюсь, что этот код поможет вам

+0

Можете ли вы дать объяснение по моему делу? Я смущен тем, как реализация цикла массива данных вставляет его в таблицу базы данных @EsmailJamshidiasl – zelfix

Смежные вопросы