0

私はこのXMLファイルを持っています

<response> 
 <rows>
   <row>
     <id>6899</id><Number>3</Number><Parent>No Parent</Parent><State>state</State>
     <DateFmt>27-AUG-2013</DateFmt>
   </row>
   <row>
     <id>5523</id><Number>3</Number><Parent>YES</Parent><State>state</State>
     <DateFmt>16-AUG-2013</DateFmt>
   </row>
   <row>
     <id>80193</id><Number>1</Number><Parent>NO</Parent><State>state</State>
     <DateFmt>18-SEP-2013</DateFmt>
   </row>
</rows>

私はphpを使用してコンテンツsimplexml_load_string()を取得し、次に2つのforeachループを使用してxml内の文字列を取得していますコード:

 $xml = simplexml_load_string($result);
if(!$xml) { 
  $errors .= "...";
   }else{                     
    foreach($xml->rows as $rows)
    {           
      foreach($rows->row as $row) 
       {                          
         if(isset($row->DateFmt) AND !empty($row->DateFmt))
           { 
         $DateFmt = date("Y-m-d", strtotime($row->DateFmt)); //format the data to suit the MDB table structure  
         }else $DateFmt = "NULL"; //put null so the MySQL will recognize an empty set

   $Query .= "(
        '".mysql_real_escape_string($row->id)."',   
        '".mysql_real_escape_string($row->Number)."',   
        '".mysql_real_escape_string($row->Parent)."',   
        '".mysql_real_escape_string($row->State)."',                        
        if ($DateFmt == 'NULL') $Query .= " NULL, "; 
        else $Query .= "'".$DateFmt."', ";
   }
}

結果はDateFmtで停止し、最初からやり直します。これは、クエリ変数のエコーです。

( '6899', '3', 'No Parent', 'state', ( '5523', '3', 'YES', 'state', ( '8139', '1', 'NO', 'state', 

手助け?null値が原因でしょうか?

XMLまたは変数からdatefmtを出力すると、正しい値が得られます

ありがとう。

4

1 に答える 1

0

$Query変数を正しい方法で連結していません。

このようになるはずです(コマの前にブラケットを閉じたいと思っているとも思います)。

dateまた、コマンドが正しい方法で日付を解析していること、および何か変数があることも確認する必要があり$DateFmtます。

$Query .= "(
    '".mysql_real_escape_string($row->id)."',   
    '".mysql_real_escape_string($row->Number)."',   
    '".mysql_real_escape_string($row->Parent)."',   
    '".mysql_real_escape_string($row->State)."',";

    if ($DateFmt == 'NULL'){
        $Query .= " NULL), "; 
    }
    elseif ($DateFmt == FALSE){
        $Query .= " NULL), "; //$DateFmt is not set because date("Y-m-d", strtotime($row->DateFmt)) failed
    }
    else{
        $Query .= "'".$DateFmt."'), ";
    }
于 2013-09-20T08:56:10.823 に答える