1
resposta

Script PHP para salvar xml em MySQL

<?php

$url ="https://websitedofeed.com/arquivo.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url); // get the url contents

$data = curl_exec ($ch); //execute curl request
curl_close($ch);

$xml = simplexml_load_string($data);

define("DB_SERVER", "host_do_db");
define("DB_USER", "login");
define("DB_PASSWORD", "senha");
define("DB_DATABASE", "bancodedados");

foreach ($xml -> item as $row ) {
    $title = $row -> title;
    $description = $row -> description;

//performing SQL query

$sql = "INSERT INTO 'xml_information' ('title')"
            . "VALUES('$title')";

$result = mysqli_query($sql);
if (!$result) {
    echo 'MySQL ERROR';
    } else {
    echo 'Success!';    
    }

                                }

?>

Olá pessoal do Alura! Estou tentando criar um script php para coletar informação de um feed xml e salvar em um banco de dados MySQL porém o PHP está me retornando a mensagem abaixo, após pesquisar vi que isto se dá em função do foreach funcionar apenas se tratando de um array, o problema é que não sei consertar o código. Vocês conseguem me ajudar? Obrigado.

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\topcharts\xml_recorder.PHP on line 18

1 resposta

Oi Murilo, tudo bom?

Realmente, o foreach apenas varre arrays. No seu caso, você quer manusear seu XML.

Pra isso, a gente tem uma ferramenta chamada Dom Document. Que vai tratar se texto XML com base nos nós. Assim você consegue processar melhor.

Aqui você encontra a documentação com tudo que essa ferramenta faz =)

Qualquer duvida, compartilha com a gente

Abraço!