0

この質問はすでに多くの人から寄せられていることを知っており、すでにいくつかのガイドに従っていますが、今まで問題を解決できず申し訳ありません。FTP サーバーのローカル ディレクトリに保存されている XML ファイルが多数あります。ここで、すべての XML ファイルを 1 行ずつ読み取り、作成済みの 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 ステートメントを書きたいと思います。混乱がパスを読み取らない場合、エラーを出力しますか? どのように私はステートメントを呼び出す必要がありますか?

4

1 に答える 1

0

発生しているエラーについてもう少し具体的に教えていただけますか?

私が見る可能性は、

1) 時間は文字列で、引用符で囲んでおらず、$query 変数が空白の場合。mysql_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()); 

        }
于 2013-10-17T09:35:55.033 に答える