2012-02-04 12 views
0

私は次のコードで試してみましたが、そのはdatataseのLOAD DATA LOCAL INFILE

$sql = "LOAD DATA INFILE 'corporatenews/$zname' INTO TABLE `corporatenews` FIELDS TERMINATED BY '|' LINES STARTING BY '<row>' TERMINATED BY '</row>' (`ByLine`,`StoryId`,`PublishDate`,`Author`,`Category`,`SubCategory`,`TitleLine`,`SubTitleLine`,`StoryMain`,`Flag`)"; 

$ ZNAMEにデータを格納していない場合は、データベース

にそのXMLファイルからデータを挿入したいXMLファイルを持っています私はmysql_errorでエラーをキャッチしようとしたが、何もあなたがTRで物事を過度に複雑することができるように見えます

答えて

1

を示さなかったxmlファイル名に

を格納する変数でありますそのファイルを直接MySQLに送り込みます。簡単な解決策のためには、XMLファイル全体をメモリw/file_get_contentsに読み込み、それをPHPからMySQLに挿入するだけです。

EDIT:解明のためのOPごとのリクエスト。

OK、PHPでXMLファイルを解析する方法はたくさんありますが、IMOは最も簡単な方法はSimpleXMLです。基本的には、ファイルを読み込み、それを反復してINSERT文を作成します。 insert文をバッチ処理する方が速いかもしれませんが、今のところは忘れてしまいます。

コードは(このコードはMySQLの接続が正しく設定され前提として)このようなものになるだろう:

// iterate over XML elements 
$oXml = new SimpleXMLElement('path/to/file.xml', 0, true); 
foreach($oXml as $oElement) { 
    // build main part of query 
    $sSql = 'INSERT INTO (`ByLine`,`StoryId`,`PublishDate`,`Author`,`Category`,`SubCategory`,`TitleLine`,`SubTitleLine`,`StoryMain`,`Flag`) VALUES ('; 

    $sSql .= $oXml['ByLine'] . ','; 
    $sSql .= $oXml['StoryId'] . ','; 

// .. 

} 

基本的にあなたは、あなたが構築し、XML属性/子ノードからデータを抽出するためのSimpleXMLを使用文字列をmysql_queryに渡すことができます。

+0

私は初心者であることを教えてください。 – Manoj

+0

私は試しましたが、何も得られませんでした。 – Manoj

+0

[こちらの例](http://us.php.net/manual/en/simplexml.examples-basic .php)では、SimpleXMLElementを使用してXML文書にアクセスし、さまざまなノードの属性を取得する方法を示します。あなたがしなければならないのはあなたの文書にそれを適用し、ノードからの変数にフィールドを持たせた後、それらをSQL文(文字列)にスローし、最後に関連付ける必要のある文書の各ノードのINSERTを発行するだけです新しいデータベースエントリに追加します。 – quickshiftin

関連する問題