Php 将XML导入MySQL数据库

Php 将XML导入MySQL数据库,php,mysql,xml,database,import,Php,Mysql,Xml,Database,Import,我不熟悉编码,试图从一个XML文件创建一个数据库,该文件是一个行业、公司名称和符号列表。我看到了一些PHP代码示例,这些代码将数据导入MySQL,如下所示: <?php $url ="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sec

我不熟悉编码,试图从一个XML文件创建一个数据库,该文件是一个行业、公司名称和符号列表。我看到了一些PHP代码示例,这些代码将数据导入MySQL,如下所示:

<?php

$url ="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sectors)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url); //getting url contents

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

$xml = simplexml_load_string($data);

$con=mysql_connect("localhost", "root", ""); //connect to server
mysql_select_db("symbol_list", $con) or die(mysql_error()); //select database

foreach ($xml -> item as $row) {
    $industry = $row -> industry;
    $company = $row -> name;
    $symbol = $row -> symbol;

// perform sql query


$sql = "INSERT INTO 'symbols_xml' ('industry', 'company', 'symbol')"
    . "VALUES ('$industry', '$company', '$symbol')";

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

    echo 'SUCCESS';
}


                            }

?>
    #| Industry  | Company    | Symbol
    -|----------- ------------ -------
    1| Aluminium | Alcoa Inc. | AA.BA
等等

我最近刚开始学习PHP和数据库,所以如果这是一个浪费您时间的愚蠢问题,请原谅我。xD


谢谢。

实际上你离得不远

要获取属性,可以通过两种方式进行:

  • 将其作为一个数组来访问
    $node['attributeName']
  • 使用名为attributes()的方法,还可以执行以下操作:
    $node->attributes()->attributeName
  • 以下是您的代码更新:

    <?php
    
    $url ="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sectors)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url); //getting url contents
    
    $data = curl_exec ($ch); //execule curl request
    curl_close($ch);
    
    $xml = simplexml_load_string($data);
    
    $con=mysql_connect("localhost", "root", ""); //connect to server
    mysql_select_db("symbol_list", $con) or die(mysql_error()); //select database
    
    foreach ($xml->results->industry as $industryNode) 
    {
        foreach ($industryNode->company as $companyNode) 
        {
            $industry = (string) $industryNode['name'];
            $company = (string) $companyNode['name'];
            $symbol = (string) $companyNode['symbol'];
    
            // perform sql query
            $sql = "INSERT INTO 'symbols_xml' ('industry', 'company', 'symbol')"
                . "VALUES ('$industry', '$company', '$symbol')";
    
            $result = mysql_query($sql);
            if (!$result) 
            {        
                echo 'MySQL ERROR';
            } 
            else 
            {
                echo 'SUCCESS';
            }
        }
    }
    
    results->industry as$industryNode)
    {
    foreach($industryNode->companyas$companyNode)
    {
    $industry=(字符串)$industryNode['name'];
    $company=(字符串)$companyNode['name'];
    $symbol=(字符串)$companyNode['symbol'];
    //执行sql查询
    $sql=“插入到“符号xml”(“行业”、“公司”、“符号”)中”
    "价值("工业","公司","符号");;
    $result=mysql\u查询($sql);
    如果(!$result)
    {        
    回显“MySQL错误”;
    } 
    其他的
    {
    呼应"成功",;
    }
    }
    }
    
    非常感谢!这个“节点”的东西似乎很有效,因为现在我至少从一个“if”语句中得到了一个“MySQL错误”消息。你知道mysql\u查询有什么错吗?做一个
    echo$sqlecho die(mysql_error())if(!$result)
    语句,则代码>在内部。您还可以复制粘贴输出到您喜爱的mysql客户端的查询,并查看错误。太棒了,再次感谢。问题在于语法错误-不应该在$sql=“INSERT-INTO'symbols\u xml”(行业、公司、符号)中添加“around column names”,这样做的代码要简单得多。PHP将XML文件导入数据库-
    <?php
    
    $url ="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sectors)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url); //getting url contents
    
    $data = curl_exec ($ch); //execule curl request
    curl_close($ch);
    
    $xml = simplexml_load_string($data);
    
    $con=mysql_connect("localhost", "root", ""); //connect to server
    mysql_select_db("symbol_list", $con) or die(mysql_error()); //select database
    
    foreach ($xml->results->industry as $industryNode) 
    {
        foreach ($industryNode->company as $companyNode) 
        {
            $industry = (string) $industryNode['name'];
            $company = (string) $companyNode['name'];
            $symbol = (string) $companyNode['symbol'];
    
            // perform sql query
            $sql = "INSERT INTO 'symbols_xml' ('industry', 'company', 'symbol')"
                . "VALUES ('$industry', '$company', '$symbol')";
    
            $result = mysql_query($sql);
            if (!$result) 
            {        
                echo 'MySQL ERROR';
            } 
            else 
            {
                echo 'SUCCESS';
            }
        }
    }