0

私は進行中のxmlファイルを持っています.php関数を呼び出して新しい子を追加すると、文字列の配列をループし、データベースにクエリを実行して新しい子をドキュメントに追加し、配列の現在の文字列として保存します。ただし、追加ではなく、すべて上書きしています。最初にファイルをロードする必要がありますか? それが存在するかどうかを確認しますか?

function createUnitsXML($units,$wcccanumber,$mysqli) {

// Delete whitespaces and create an array of units assigned to call
$unit = preg_replace('/\s+/', '', $units);
$unitsarray = explode(",",$unit);

    for ($i = 0; $i < count($unitsarray); $i++) {

        $xml = new SimpleXMLElement('<xml/>');

        $query = "SELECT * FROM calls WHERE wcccanumber = '$wcccanumber'";
        $result = $mysqli->query($query);

        while($row = mysqli_fetch_assoc($result)) {
             $draw = $xml->addChild('call');
             $draw->addChild('wcccanumber',$row['wcccanumber']);
             $draw->addChild('currentcall',$row['call']);
             $draw->addChild('county',$row['county']);
             $draw->addChild('id',$row['id']);
             $draw->addChild('location',$row['location']);
             $draw->addChild('callcreated',$row['callcreated']);
             $draw->addChild('station',$row['station']);
             $draw->addChild('units',$row['units']);
             $draw->addChild('calltype',$row['calltype']);
             $draw->addChild('lat',$row['lat']);
             $draw->addChild('lng',$row['lng']);
             $draw->addChild('inputtime',$row['inputtime']);
        }
        $fp = fopen("xml/units/$unitsarray[$i].xml","wb");
        fwrite($fp,$xml->asXML());
        fclose($fp);
    }
    echo "--- Created units XML document for call: $wcccanumber";
    echo "</br>";
}
4

1 に答える 1

1
$fp = fopen("xml/units/$unitsarray[$i].xml","wb");

ファイルを「wb」として開くと、ファイルを切り捨てて書き込むことになります。代わりに、"ab" (書き込み専用、ファイルの末尾に追加) または "ab+" (読み取りまたは書き込み、ファイルの末尾に追加) を使用してみてください。

于 2012-12-18T19:06:25.777 に答える