PHP导出数据库结果为XML需先查询数据,再逐行生成含XML声明、根节点和子节点的标准结构,字段名作标签、值作内容,并设置HTTP头以触发下载或显示。

PHP将数据库结果集导出为XML,核心是把查询得到的数据(如MySQL的mysqli或PDO结果)逐行转换为符合XML结构的字符串,并设置正确的HTTP头让浏览器识别为XML文件下载或显示。
构造标准XML结构
XML需有声明、根节点和规范的子节点。每条记录建议用
- echo "\n";
- echo "\n";
- 循环中:echo "
\n";" . htmlspecialchars($row['id']) . " " . htmlspecialchars($row['name']) . " - echo "";
使用DOMDocument生成更安全的XML
比手动拼接更可靠,DOM会自动处理转义、嵌套和编码。先创建DOMDocument对象,设置formatOutput = true提升可读性,再逐行添加元素:
- $doc = new DOMDocument('1.0', 'UTF-8');
- $doc->formatOutput = true;
- $root = $doc->createElement('data');
- 循环中:$record = $doc->createElement('record'); → 添加子节点$idNode = $doc->createElement('id', $row['id']); → 追加到$record → 再追加到$root
- 最后:$doc->appendChild($root); echo $doc->saveXML();
设置响应头触发下载
若希望用户直接下载XML文件而非在浏览器中打开,需在输出前发送HTTP头:
1.) 将所有文件解压到php环境中,本程序才用smarty+php+mysql设计。如果运行不了,请修改hhy文件夹下的smarty.php文件改法请看说明2.) 修改configs下的config.inc.php下的连接数据库的密码和用户名3.) 本程序没有做安全页面,人工导入sql.inc到mysql数据库。管理员初始化帐号为admin,密码为hhy。后台地址:http://你的网站地址/h
立即学习“PHP免费学习笔记(深入)”;
- header('Content-Type: application/xml; charset=UTF-8');
- header('Content-Disposition: attachment; filename="export.xml"');
- header('Cache-Control: no-cache');
- 注意:这些header()调用必须在任何输出(包括空格、BOM、echo)之前执行
从PDO或MySQLi获取数据并整合
以PDO为例,开启PDO::FETCH_ASSOC模式便于按字段名访问;MySQLi则用fetch_assoc()。确保数据库连接和查询无误,且字符集统一为UTF-8(连接时指定charset=utf8mb4):
- PDO示例:$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", $user, $pass);
- $stmt = $pdo->query("SELECT id, name, email FROM users");
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { /* 构建XML节点 */ }










