Я воспроизвел свой код в подготовленном заявлении (надеюсь, достаточно правильно), и теперь я могу вставлять значения из моего XML в таблицу SQL. Проблема в том, что он только вставляет данные из первого продукта. И я хочу, чтобы оператор выполнял это для всех продуктов.
Вот план онлайн-XML, который я пытаюсь вставить:
<?xml version="1.0" encoding="UTF-8"?> <datafeed> <info> <category></category> <product_count></product_count> </info> <programs> <program> <program_info> <name></name> </program_info> <products> <product> <update_info> <insert_date></insert_date> </update_info> <product_info> <price></price> <price_old></price_old> <ean></ean> </product_info> </product> <product>...</product> <product>...</product> <product>...</product> <product>...</product> </products> </program> </programs> </datafeed>
Код, который я сейчас использую, и который вводит только значения первого продукта:
<?php $conn = new mysqli($servername, $username, $password, $dbname); $xml=simplexml_load_file("URL-to-XML") or die("Error: Cannot create object"); foreach ($xml->programs->program->products->product->product_info->price as $price); foreach ($xml->programs->program->products->product->product_info->price_shipping as $price_shipping); // prepare and bind $stmt = $conn->prepare("INSERT INTO BBB (price, price_shipping) VALUES (?,?)"); $stmt->bind_param("ss", $input_price, $input_price_shipping); // set parameters and execute $input_price = $price; $input_price_shipping = $price_shipping; $stmt->execute(); echo "New records created successfully"; $stmt->close(); $conn->close(); ?>
Я попытался воспроизвести это на подготовленном коде, поэтому, если есть дополнительная информация о том, как улучшить код, пожалуйста, дайте мне знать.