Передача данных из массива в базу

Статус
В этой теме нельзя размещать новые ответы.
Простой вариант:

PHP:
$arr = Array(...); //тот самый массив

$query = '';

for($i=0; $i<count($arr); $i+=4){
    $query .= ( $query ? ', (' : '(' ) . "'".$arr[$i]."','".$arr[$i+1]."','".$arr[$i+2]."','".$arr[$i+3]."')";
}

mysql_query('INSERT INTO `baze` (`name`, `opt`, `retail`, `ost`) VALUES ' . $query);

Вариант для больших объемов:
PHP:
$arr = Array(...); //тот самый массив

$query = '';

for($i=0; $i<count($arr); $i+=4){
    $query .= ( $query ? ', (' : '(' ) . "'".$arr[$i]."','".$arr[$i+1]."','".$arr[$i+2]."','".$arr[$i+3]."')";
    if($i%100==0){
        mysql_query('INSERT INTO `baze` (`name`, `opt`, `retail`, `ost`) VALUES ' . $query);
        $query='';
    }
}

mysql_query('INSERT INTO `baze` (`name`, `opt`, `retail`, `ost`) VALUES ' . $query);
 
в мускул можно загонять данные, перекодировав их в бинарник функцией pack, но перед этим сделать serialize
 
nopase, вот так гибче, понятней и быстрее
PHP:
for($i=0; $i<count($arr); $i++){
    $query .= ( $query ? ', (' : '(' ) . "'".$arr[$i]."','".$arr[$i++]."','".$arr[$i++]."','".$arr[$i++]."')";
}
 
nopase, вот так гибче, понятней и быстрее

не сочитите за наезд, любезнейший, но...
гибче - не понятно что и зачем сгибали :)
понятней - хм. очень спорный факт.
быстрее - стоит проверить.

А вот что ошибочно - это факт!
Ибо аналог этого кода:
PHP:
$a = array(1,2,3,4,5,6,7,8,9);
for($i=0;$i<count($a);$i++){
	echo $a[$i].' '.$a[$i++].' '.$a[$i++]."\n";
}

вместо ожидаемого

Код:
1 2 3
4 5 6
7 8 9

выведет
Код:
1 1 2
4 4 5
7 7 8
 
да, мой косяк - напутал с порядком.

PHP:
$a = array(1,2,3,4,5,6,7,8,9);

// исправляется вот так
for($i=0;$i<count($a);$i++)
{
    echo $a[$i].' '.$a[++$i].' '.$a[++$i]."\n";
}

// либо так
for($i=0;$i<count($a);$i++)
{
    echo $a[$i++].' '.$a[$i++].' '.$a[$i]."\n";
}
 
Для полноценного скрипта надо еще добавить хотя-бы минимальную проверку корректности информации. Например что размерность массива кратна числу полей. Иначе рискуем получить ошибку в sql-запросе и частично загруженные данные.
 
задача целиком не ясна, но по мне здесь вполне можно обойтись сериализацией массива.
 
Что может быть проще обойти все элементы и сгенерировать запрос SQL?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху