Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
上传xml文件,解析它&;使用PHP(MySQLi)在MySQL数据库中存储节点值_Php_Mysql_Xml_Mysqli - Fatal编程技术网

上传xml文件,解析它&;使用PHP(MySQLi)在MySQL数据库中存储节点值

上传xml文件,解析它&;使用PHP(MySQLi)在MySQL数据库中存储节点值,php,mysql,xml,mysqli,Php,Mysql,Xml,Mysqli,我花了相当长的时间寻找这个,但我找不到任何有效的 我上传了xml文件&我想加载它,这样我就可以解析它并将节点值存储到我的数据库中。我设法上传了文件(上传的文件在“上传”文件夹中)。但是我无法解析上传的xml文件&从特定元素标记提取数据以将它们存储在数据库中 当我将链接粘贴到浏览器中时,下面代码中的$myfileLink会起作用。 $myfileLink在本例中是“http://localhost/aps/uploads/user.xml” 以下是我的php脚本: <?php

我花了相当长的时间寻找这个,但我找不到任何有效的

我上传了xml文件&我想加载它,这样我就可以解析它并将节点值存储到我的数据库中。我设法上传了文件(上传的文件在“上传”文件夹中)。但是我无法解析上传的xml文件&从特定元素标记提取数据以将它们存储在数据库中

当我将链接粘贴到浏览器中时,下面代码中的
$myfileLink
会起作用。
$myfileLink
在本例中是“
http://localhost/aps/uploads/user.xml

以下是我的php脚本:

    <?php

    error_reporting(E_ALL); ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    include 'conn.php';

    $query = "INSERT INTO report (File_Name, File_Size, File_Link, File_Type, Created_Timestamp, Name, Address, Phone, Fax) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";

    $ds = "/";
    $storeFolder = 'uploads';


    if(!empty($_FILES)) {
        $myfileName = basename($_FILES['file']['name']);
        $myfileType = $_FILES['file']['type'];
        $myfileSize = $_FILES['file']['size'];
        $myfileLink = 'http://localhost/aps/uploads/' . rawurlencode($myfileName);
        $myfileDate = date("Y-m-d H:i:s");

        $tempFile = $_FILES['file']['tmp_name'];
        $targetPath = dirname(__FILE__) . $ds . $storeFolder . $ds;
        $targetFile = $targetPath . $_FILES['file']['name'];
        move_uploaded_file($tempFile, $targetFile);

        $xml = simplexml_load_file($myfileLink) or die("Error: Cannot create object");

        $myname = $xml->name;
        $myaddress = $xml->address;
        $myphone = $xml->phone;
        $myfax = $xml->fax;

        $stmt = $conn->prepare($query);
        $stmt->bind_param('sisssssss', $myfileName, $myfileSize, $myfileLink, $myfileType, $myfileDate, $myname, $myaddress, $myphone, $myfax);

        if($stmt->execute()) {
            echo 'Success!';
        } else {
            die('Error: ('. $conn->errno . ') ' . $conn->error);
        }

    }

    ?>

下面是user.xml文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<user>
    <name>Example 1</name>
    <address>Example 2</address>
    <phone>Example 3</phone>
    <fax>Example 4</fax>
</user>

例1
例2
例3
例4
我还尝试了php手册中的这段代码,以检查文件是否可以加载。但它给了我错误“无法打开文件”



我做错了什么?有人能帮忙吗?谢谢

如果你有MySQL 5.5或更高版本,你可以省去很多麻烦,只需使用?@eggyal谢谢你的提示。我设法加载了XML,但如何将此语句与INSERT语句连接起来,以获得存储在同一行中的文件名和文件类型?我必须为此做两个单独的声明吗?
<?php
// The file test.xml contains an XML document with a root element
// and at least an element /[root]/title.

if (file_exists('http://localhost/aps/uploads/user.xml')) {
    $xml = simplexml_load_file('http://localhost/aps/uploads/user.xml');

    print_r($xml);
} else {
    exit('Failed to open file.');
}
?>