Insert array into database [closed]

-3

I did not post the whole code before because it was too long (I still summed up taking some non-relevant data), now there's the whole code. I'm getting values from the products, I squeeze a foreach from the ID of each one and then pull the data from that product, when it arrives at 'categoria'=>$produto_loaded->getCategoryIds(), it brings me an array of numbers because the product is in several categories, when I I will insert this array again into the table as it is below it inserts only the name Array .

Code

    ini_set("display_errors", 1);
    ini_set('memory_limit','1024M');
        require_once('app/Mage.php');
        Mage::app(0);


        $collection = Mage::getModel('catalog/product')->getCollection();

        foreach ($collection as $key => $produto) {
        $id = $produto->getId();

        $produto_loaded = Mage::getModel('catalog/product')->load($id);

            $tudo = array(

            'categoria'=>$produto_loaded->getCategoryIds(),
            'positioncat'=>$produto_loaded->getPosition(),
            'loja'=>addslashes($produto_loaded->getStoreId()),
            'atributo_id'=>addslashes($produto_loaded->getAttributeSetId()), 
            'tipo_de_produto'=>addslashes($produto_loaded->getTypeID()),
            'id_produto' =>addslashes($produto_loaded->getId()), 
            'sku'=>addslashes($produto_loaded->getSku()),
            'status'=>addslashes($produto_loaded->getStatus()),
            'visibilidade'=>addslashes($produto_loaded->getVisibility()),
            'nome'=>addslashes($produto_loaded->getName()),
            'descriçao'=>addslashes($produto_loaded->getDescription()),
            'nomeurl'=>addslashes($produto_loaded->getProductUrl()));

                    $teste = $tudo['id_produto'];
                    $link = mysqli_connect('localhost','root','','teste2');
                    $link->set_charset("utf8");
                    $query = 

                            "SELECT a.website_id as websiteid, 
                            b.category_id as categoria, 
                            b.position as positioncat
                            FROM catalog_product_website a
                            INNER JOIN catalog_category_product b
                            ON a.product_id = b.product_id
                            WHERE a.product_id = '$teste'";

                    $select = mysqli_query($link, $query);
                    while ($row = mysqli_fetch_array($select)) {
                       $websiteid = $row['websiteid'];
                    }

        if($produto_loaded->getTypeId() == 'bundle'){

                    $teste = $tudo['id_produto'];
                    $link = mysqli_connect('localhost','root','','teste2');
                    $link->set_charset("utf8");
                    $query = "SELECT selection_id as select_id, option_id as option_bundle, position as position_bundle, parent_product_id as bundle_id, product_id as prod_id, is_default as padrao, selection_price_type as tipodepreco, selection_price_value as preco_bundle, selection_qty as qtd, selection_can_change_qty as mudarqtd from catalog_product_bundle_selection WHERE parent_product_id = '$teste'";
                    $select = mysqli_query($link, $query);
                    foreach($select as $s){
                        $connection = Mage::getSingleton('core/resource')->getConnection('core_write');
                        $query = "INSERT INTO produtos ('loja', 'websiteid', 'atributo_id', 'tipo_de_produto',  'id_produto',  'sku', 'status', 'visibilidade', 'nome', 'descriçao', 'nomeurl', 'categoria',) VALUES ('".$tudo['loja']."', '".$websiteid."',  '".$tudo['atributo_id']."', '".$tudo['tipo_de_produto']."',  '".$tudo['id_produto']."',  '".$tudo['sku']."', '".$tudo['status']."', '".$tudo['visibilidade']."', '".$tudo['nome']."', '".$tudo['descriçao']."', '".$tudo['nomeurl']."', '".$tudo['categoria']."', '".$s['bundle_id']."', '".$s['prod_id']."', '".$s['position_bundle']."', '".$s['option_bundle']."', '".$s['select_id']."', '".$s['padrao']."', '".$s['tipodepreco']."', '".$s['preco_bundle']."', '".$s['qtd']."', '".$s['mudarqtd']."')";
                        $connection->query($query);
                    }

                } else {
                    $connection = Mage::getSingleton('core/resource')->getConnection('core_write');
                    $query = "INSERT INTO produtos ('loja', 'websiteid', 'atributo_id', 'tipo_de_produto', 'id_produto',  'sku', 'status', 'visibilidade', 'nome', 'descriçao', 'nomeurl', 'categoria') VALUES ('".$tudo['loja']."', '".$websiteid."', '".$tudo['atributo_id']."', '".$tudo['tipo_de_produto']."', '".$tudo['id_produto']."',  '".$tudo['sku']."', '".$tudo['status']."', '".$tudo['visibilidade']."', '".$tudo['nome']."', '".$tudo['descriçao']."', '".$tudo['nomeurl']."', '".$tudo['categoria']."')";
                    $connection->query($query);
                  }
                }
                ?>
    
asked by anonymous 23.11.2017 / 19:02

2 answers

1

Scroll through your array to enter the records correctly:

foreach($tudo['categoria'] as $idCategoria){
    $query = "INSERT INTO produtos ('categoria', .........) VALUES ('".$idCategoria."', .........)";
}
    
23.11.2017 / 19:28
0

If the columns in your table appear in the braces of your array, you can insert it in this way.

foreach ($tudo as $column => $value) {
   $cols[] = $column;
   $vals[] =  $value;
   //quando necessário troque a linha de cima pela de baixo
   //$vals[] = mysqli_real_escape_string($link, $value);
}
$colnames = "'".implode("', '", $cols)."'";
$colvals = "'".implode("', '", $vals)."'";

$mysql = mysqli_query($link, "INSERT INTO produtos ($colnames) VALUES ($colvals)") or die('Database Connection Error ('.mysqli_errno(produtos).') '.mysqli_error(produtos). " on query: INSERT INTO produtos ($colnames) VALUES ($colvals)");
    
23.11.2017 / 21:23