Php 如何在mysql表中插入xml文件

Php 如何在mysql表中插入xml文件,php,mysql,sql,xml,Php,Mysql,Sql,Xml,我知道这个问题已经被很多人问过了,我也已经按照一些指南去做了,但是很抱歉,到现在为止我还不能解决我的问题。我有许多XML文件保存在FTP服务器的本地目录中。现在我需要逐行读取每个XML文件,并将其放在我已经创建的MySQL数据库中。这里我附加了我的代码,它没有在我的服务器上运行,在数据库中我没有看到任何东西 // Read filenames in current directory looking for XML files $dir = "/path/to/filename"; if (i

我知道这个问题已经被很多人问过了,我也已经按照一些指南去做了,但是很抱歉,到现在为止我还不能解决我的问题。我有许多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。如果mess不读取路径,打印错误?我该怎么称呼is statement not get。如果有人能帮助我,那就太好了。

你能更具体地说明一下你遇到的错误吗

我看到的可能性是

1) 时间可以是一个字符串,并且没有引号,并且$query变量为空。在mysql\u query中传递的$query变量中没有值 2) MySQL连接问题 3) MySQL/PHP执行时间不足

尝试在单报价中添加$time

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

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

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()); 

        }

嗨,问题是现在我可以看到一个空白页没有任何错误,这意味着我的查询无法工作。我现在遇到的问题是,当我尝试在不起作用的目录中循环我的xml文件并插入到非wokring的数据库中时,问题就出在这一部分。现在我修改了一些代码,再次插入这里。也许你有我的问题。我遵循你的代码,但它不起作用//读取当前目录中的文件名,查找XML文件$dir=“/my file/name;if(is_dir($dir)){if($dh=opendir($dh)){while($file=readdir($dh))!=false{if($file!=')&($file!=')){$xml=simplexml_load_file($dir.$file);/$rgsostituzine=$xml->attributes()->sostituzine;echo“letto
”;}}}closedir($dh);}在这段代码的集合中,您能为我编写循环xml文件的查询,然后将其放在mysql数据库上吗?因为我看不到任何更改。请在您的代码错误报告(E_ALL);ini_set('error_reporting',E_ALL)的顶部添加这两行代码;并检查您得到的错误是什么Hi,我尝试了,但没有错误。我想我不清楚我的解释。现在的问题是我能够读取我的xml文件,我存储在ftp服务器上的一个文件夹中,但问题出在foreach中-我的意思是,现在我想解析我的xml文件并将其放到数据库中。请解决这个问题e problem.hi,没有人能解决我的这个问题?到目前为止,我一直在解决同一个问题。尝试使用
date()
您好,我已经使用了这个,但不起作用,因为如果您按照我的第一个问题中的查询进行操作,您可以理解我的问题是不同的。我的意思是,我想逐行读取xml输出,然后将其放在我的mysql表中。但问题是,我应该如何更改我的时间查询,以放入mysql数据库,其中我的表是name(data)。我要在其中插入您看到的给定行的时间xml。使用
date()
可以指定格式。然后可以使用
字符串
返回您用来插入MySQL数据库的变量。好的,但您能为我解释一下或编写代码吗?详细信息,因为我不是php专家,这就是我感到困惑的原因。plz正如您看到的,我在问题中写了我的查询,我应该写的是date()。