вставить xml в mysql - PullRequest
       1

вставить xml в mysql

0 голосов
/ 01 апреля 2020

привет, я пытаюсь вставить некоторые данные из файла xml в mysql, мне нужно вставить код данных в столбец ссылок и данные qta в столбце количества Xml:

<dispo>

<codice>CA031BL</codice>

<arrivi>

  <arrivo>

    <maga>B</maga>

    <data>2020-04-01</data>

    <qta>0</qta>

  </arrivo>

</arrivi>

<codice>CA031BL</codice>

<arrivi>

  <arrivo>

    <data>2020-04-01</data>

    <maga>C</maga>

    <qta>30</qta>

  </arrivo>
  </dispo>

в php файле, который я вставил: подключение к mysql дБ работает просто xml загрузка кажется работающей, если я вставлю число в $ количество и $ Ссылка это работает, но как я могу вставить правый столбец xml файла?

<?php
$conn = mysqli_connect("host", "user", "psw", "db");

$affectedRow = 0;

$xml = simplexml_load_file("http://......./dispo2.xml") or die("Error: Cannot create object");

foreach ($xml->children() as $row) {
    $quantity = $row->qta;
    $reference = $row->codice;

    $sql = "UPDATE ps_stock_available set quantity = '$quantity' where id_product = (SELECT id_product from ps_product where reference in ('$reference')";

    $result = mysqli_query($conn, $sql);

    if (! empty($result)) {
        $affectedRow ++;
    } else {
        $error_message = mysqli_error($conn) . "\n";
    }
}
?>
<h2>Insert XML Data to MySql Table Output</h2>
<?php
if ($affectedRow > 0) {
    $message = $affectedRow . " records inserted";
} else {
    $message = "No records inserted";
}

?>
<style>
body {  
    max-width:550px;
    font-family: Arial;
}
.affected-row {
    background: #cae4ca;
    padding: 10px;
    margin-bottom: 20px;
    border: #bdd6bd 1px solid;
    border-radius: 2px;
    color: #6e716e;
}
.error-message {
    background: #eac0c0;
    padding: 10px;
    margin-bottom: 20px;
    border: #dab2b2 1px solid;
    border-radius: 2px;
    color: #5d5b5b;
}
</style>
<div class="affected-row"><?php  echo $message; ?></div>
<?php if (! empty($error_message)) { ?>
<div class="error-message"><?php echo nl2br($error_message); ?></div>
<?php } ?>

Мне нужно вставить это также перед импортом данных, потому что я должен вставить в количестве mysql сумму значения QTA моего xml с тем же кодом:

 select `reference`, sum(`quantity`)
    from `ps_product_attribute`
    group by `reference`

1 Ответ

0 голосов
/ 02 апреля 2020

Когда вы загружаете данные из Simple XML и просто используете

$quantity = $row->qta;

Значение в количестве будет SimpleXMLElement, вы можете проверить это с помощью

var_dump($quantity);

, которое покажет

class SimpleXMLElement#6 (0) {
}

Поэтому, если вы хотите использовать эти значения в большинстве других случаев, вам может потребоваться привести их к строкам ...

$quantity = (string)$row->qta;

Эта проблема может скрыться как echo автоматически приведёт значения к строкам для их вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...