Как сделать Insert многомерного массива в бд

Sanu0074
На сайте с 31.08.2012
Offline
110
610

Например есть массив:

$output[$i]=array("a"=>1,"b"=>2,"c"=>3);

Здесь можно в цикле делать insert каждого массива на каждой итерации цикла, а можно ли сразу все добавить (массив целяком), чтоб обойтись без прогона циклом?

OW
На сайте с 01.11.2011
Offline
104
#1

Сериализацию сделать, а полученое и загонять

Sanu0074
На сайте с 31.08.2012
Offline
110
#2

oleg_ws, я непойму, что даст сериализация?

например , вот цикл (вложенный) перебирающий массив:

			 for($j=0; $j<count($item[$i]["product_property"]); $j++){
$item[$i]["product_property"][$j]["tmp_id"];
$item[$i]["product_property"][$j]["name"];
$item[$i]["product_property"][$j]["nameSite"];
}

Имена полей таблицы совпадают с индексами массива.

Одна строка в таблице = $item[$i]["product_property"][$j]

siv1987
На сайте с 02.04.2009
Offline
427
#3

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

Sanu0074
На сайте с 31.08.2012
Offline
110
#4

siv1987, спасибо, уже сделал:


$sql = 'INSERT INTO `product_property` (`tmp_id`, `name`, `nameSite`) VALUES ';
$size = sizeof( $item );
for( $i = 0; $i < $size; $i++ )
{
$data = $array[$i]["product_property"];
$sql .= "('" . $data["tmp_id"] . "', '" . $data["name"] . "', '" . $data["nameSite"] . "'),";
}
$sql = rtrim( $sql, ',' );
TF-Studio
На сайте с 17.08.2010
Offline
334
#5

foreach как-то проще будет и багов чуть меньше (пропущенный индекс, ...)

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий