update sql foreach php array

246
21 сентября 2017, 17:21

Добрый день или вечер)

Подскажите как реализовать брать с array ключи (price,vendorcode) и обновлять их в базе данных в цикле foreach

Сам вывод array

Array
(
    [0] => Array
        (
            [name] => Маска для волос с маслом Арганы Angel Glowring Hair Mask Tony Moly
            [price] => 228.0
            [vendorcode] => HR02003200
        )
    [1] => Array
        (
            [name] => Спрей для сияния волос Angel Glowring Hair Mist Tony Moly
            [price] => 796.0
            [vendorcode] => Т1380
        )
    [2] => Array
        (
            [name] => Крем-молочко для рук с экстр. банана Magic Food Banana Hand Milk Tony Moly
            [price] => 483.0
            [vendorcode] => BD03012800
        )
    [3] => Array
        (
            [name] => Пенка для умывания с алоэ для проблемной кожи Clean Dew Aloe Foam Cleanser Tony Moly
            [price] => 354.0
            [vendorcode] => SS02013200
        )
    [4] => Array
        (
            [name] => Пенка для умывания с экстрактом черники Clean Dew BlueBerry Foam Cleanser Tony Moly
            [price] => 354.0
            [vendorcode] => SS02013700
        )
    [5] => Array
        (
            [name] => Бальзам для очищения пор с тепл. эффектом PORE BLACK head Steam Balm Tony Moly
            [price] => 744.0
            [vendorcode] => Т1562
        )

Код

  $xml = simplexml_load_file('yandex.xml');
    function xml2array ( $xmlObject, $out = array () )
    {
        foreach ( (array) $xmlObject as $index => $node )
            $out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;
        return $out;
    }
    $yml_offers = [];
    foreach ($xml->xpath('/yml_catalog/shop') as $element) {
        foreach ($element->xpath('offers/offer') as $category) {
            $yml_offer = array();
            $yml_offer['name'] = implode(xml2array($category->name));
            $yml_offer['price'] = implode(xml2array($category->price));
            $yml_offer['vendorcode'] = implode(xml2array($category->vendorCode));
            $yml_offers[] = $yml_offer;
        }
    }
Answer 1

Как то так. На самом деле для более точного ответа не хватает структуры таблицы и подробного описания, что и каким образом вы хотите обновлять.

Для выполнения однотипных операций вставки или изменения используйте подготовленные запросы. Они:

  1. Безопасны. Так как перед подстановкой параметров в запрос они автоматом проверяются и экранируются.
  2. Работают быстрее (когда их выполняется более одного)
  3. Делают код на порядок удобочитаемее

.

$db = mew mysqli(.....);
$yml_offers = [];
$yml_offer = ['name'=>'','price'=>0,'vendorcode'=>''];
$stmt = $db->prepare('UPDATE table SET price=? vendorcode=? WHERE name=?');
$stmt->bind_params('iss', $yml_offer['price'], $yml_offer['vendorcode'], $yml_offer['name']);
foreach ($xml->xpath('/yml_catalog/shop') as $element) {
    foreach ($element->xpath('offers/offer') as $category) {
        $yml_offer['name'] = implode(xml2array($category->name));
        $yml_offer['price'] = implode(xml2array($category->price));
        $yml_offer['vendorcode'] = implode(xml2array($category->vendorCode));
        $stmt->execute();
        $yml_offers[] = $yml_offer;
    }
}
Answer 2
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->query("UPDATE table SET price=".$yml_offer['price']." name='".$yml_offer['name']."' vendorcode ='".$yml_offer['vendorcode']."' WHERE id=".key($category))
READ ALSO
как вывести нужную запись по id из БД

как вывести нужную запись по id из БД

Доброго времени суток, есть БД news из которой на индексной странице выводится заголовок и анонс новостиС помощью ссылки, через id осуществляется...

287
Оптимизация выборки из базы данных

Оптимизация выборки из базы данных

Есть две таблицы b_stat_city_ip (поля таблицы START_IP, END_IP, COUNTRY_ID, CITY_ID), b_stat_city (поля ID, COUNTRY_ID, REGION, NAME)Необходимо получить ip адрес и узнать входит ли он в диапазон...

192
Ускорить выборку в базу

Ускорить выборку в базу

Когда нагрузка на сайт не большая загружается за 862 s когда нагрузка большая то загружается долго , как можно ускорить запрос?

217