如何将xml文件插入到mysql表中

时间:2013-10-17 09:15:49

标签: php mysql sql xml

我知道这个问题已经被很多人问过了,我已经按照指南说了但很抱歉,直到现在我无法解决我的问题。我有许多XML文件保存在我的FTP服务器上的本地目录中。现在我需要逐行读取每个XML文件并将其放在我已创建的MySQL数据库中。在这里,我附上了我的代码,它没有在我的服务器和数据库中运行,我没有看到任何内容。

// Read filenames in current directory looking for XML files

$dir = "/path/to/filename";
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
      if (($file !== '.') && ($file !== '..') ) {
    $xml = simplexml_load_file($dir.$file);  
        //$RGSostituzione = $xml->attributes()->Sostituzione;

    }
  }
  closedir($dh);
  }
}

// Loop through each XML file in the current directory
  $query = array();

    foreach($dir as $filename) {

        $mess =simplexml_load_file("/path/to/filename".$filename);

        $time = mysql_real_escape_string($mess->time);
        $Id = mysql_real_escape_string($mess->Id);
        $From = mysql_real_escape_string($mess->From);
        $Subject = mysql_real_escape_string($mess->Subject);
        $address = mysql_real_escape_string($mess->address);
        $Body = mysql_real_escape_string($mess->Body);


        $query[] = "('$time', '$Id', '$Subject','$address','$Body')";


    } if(!empty($query)) {
        $query = implode(",",$query);
mysql_query("INSERT INTO xml (time, Id, From, Subject,address,Body)VALUES {$query}") or die("Query 2 non valida: " . mysql_error()); 

}
//close connection 
mysql_close($conn);

?>

已编辑_:我的上一个请求来自此给定代码 -

 // Loop through each XML file in the current directory
      $query = array();

        foreach($dir as $filename) {

            $mess =simplexml_load_file("/path/to/filename".$filename);
在$ mess之后我想在foreach循环中写一个if statemnet ..如果乱七八糟的读取路径打印错误?我怎么称呼是声明不要得到。如果有人能帮助我,那就更好了。

1 个答案:

答案 0 :(得分:0)

你能否对你得到的错误更具体一点?

我看到的可能性是,

1)时间可以是一个字符串,你没有引号,$ query变量是空白的。您在mysql_query中传递的$ query变量中没有值 2)MySQL连接问题 3)MySQL / PHP耗尽执行时间

尝试在单引号中添加$ time。

同样,在循环中运行MySQL查询并不是一个好主意。在循环内创建一个Query并在完成循环后运行它。它应该看起来像

已编辑:使用此代码并尝试。不要忘记替换文件夹/文件的路径

error_reporting(E_ALL); 
ini_set('error_reporting', E_ALL);    
// Read filenames in current directory looking for XML files

    $dir = "/path/to/filename";
   $file_arr = array();
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
          if (($file !== '.') && ($file !== '..') ) {
         $file_arr[] = $file;
        }
      }
      closedir($dh);
      }
    }

            $query = array();

            foreach($file_arr as $filename) {

                $mess =simplexml_load_file("/path/to/file/".$filename);

                $time = mysql_real_escape_string($mess->time);
                $Id = mysql_real_escape_string($mess->Id);
                $From = mysql_real_escape_string($mess->From);
                $Subject = mysql_real_escape_string($mess->Subject);
                $address = mysql_real_escape_string($mess->address);
                $Body = mysql_real_escape_string($mess->Body);


                $query[] = "('$time', '$Id', '$Subject','$address','$Body')";


            } if(!empty($query)) {
                $query = implode(",",$query);
        mysql_query("INSERT INTO xml (time, Id, From, Subject,address,Body)VALUES {$query}") or die("Query 2 non valida: " . mysql_error()); 

        }