我正在尝试使用PHP中的数据库查询创建并保存xml文件。 代码
<?php
$INC_DIR = $_SERVER["DOCUMENT_ROOT"]. "/dispatch-dev/";
include_once($INC_DIR. 'config/database.class.php');
require_once ($INC_DIR.'functions/ftp.php');
function export_xml($call_number)
{
$db = new Database();
$sql = "SELECT * FROM nfirs_export WHERE incident_number = :call_number";
$db->bind(':call_number', $call_number);
$db->query($sql);
$row=$db->single();
$xml = new XMLWriter();
$xml->openMemory();
$file = 'parkerfd_' . $call_number . '.xml';
$xml_File = $INC_DIR. "nfirs_files/" .$file;
$xml->setIndent(true);
$xml->startDocument();
$xml->startElement('incident');
//call number
$xml->startElement('incident_number');
$xml->writeRaw($row['incident_number']);
$xml->endElement();
//year
$xml->startElement('incident_year');
$xml->writeRaw($row['incident_year']);
$xml->endElement();
//address number
$xml->startElement('address_number');
$xml->writeRaw($row['address_number']);
$xml->endElement();
//prefix directions
$xml->startElement('prefix_directional');
$xml->writeRaw($row['prefix_directional']);
$xml->endElement();
//street name
$xml->startElement('street_name');
$xml->writeRaw($row['street_name']);
$xml->endElement();
//street type
$xml->startElement('street_type');
$xml->writeRaw($row['street_type']);
$xml->endElement();
//cross street 1
$xml->startElement('cross_street_1');
$xml->writeRaw($row['cross_street_1']);
$xml->endElement();
//cross street 2
$xml->startElement('cross_street_2');
$xml->writeRaw($row['cross_street_2']);
$xml->endElement();
//city
$xml->startElement('city');
$xml->writeRaw($row['city']);
$xml->endElement();
//state
$xml->startElement('state');
$xml->writeRaw($row['state']);
$xml->endElement();
//incident type
$xml->startElement('incident_type');
$xml->writeRaw($row['incident_type']);
$xml->endElement();
$xml->endElement(); //incident element
header('Content-type: text/xml');
file_put_contents($xml_File, $xml->outputMemory());
$xml->flush();
send_ftp($xml_File, $file);
}
代码的目的是将名为“parkerfd_xxxxxxxx.xml”的xml文件保存到目录root / nfirs_files中。为什么我不保存xml文件? [R
答案 0 :(得分:0)
有很多原因导致这种情况无效。
首先,您要访问未在您的函数中定义的
$INC_DIR
。您希望通过添加以下代码来允许它使用
function export_xml($call_number)
{
global $INC_DIR;
// rest of your code
}
第二个原因,路径
$INC_DIR. "nfirs_files/"
可能甚至不存在,因此无法创建文件。您将要确保该文件夹存在,如果不存在,则
if (false === is_dir($INC_DIR. "nfirs_files/")) {
if (false === mkdir($INC_DIR. "nfirs_files/", 0755)) {
die('failed to create folder'); // you'll need to debug this
}
}
第三,这更多只是为了让您的生活更轻松。而不是定义每个键只是这样做。
$xml->startElement('incident');
foreach($row as $key => $value) {
$xml->startElement($key);
$xml->writeRaw($value);
$xml->endElement();
}
$xml->endElement();