如何使用PHP将动态生成的XML文档保存到数据库?

时间:2011-03-03 21:26:38

标签: php mysql xml

我似乎无法弄清楚如何将使用DOM对象生成的XML文件保存到我的数据库中。

这是我的PHP:

$xmlraw = $doc->saveXML();

$xmlQuery=sprintf("INSERT INTO xmlTestTable (XMLString) VALUES ('%s')", $xmlraw); 

$result = mysql_query($xmlQuery);

我也尝试过:

$xmlQuery=sprintf("INSERT INTO xmlTestTable (XMLString) VALUES ('%s')", $doc->saveXML()); 

$result = mysql_query($xmlQuery);

$doc是我创建的XML文档。

当我这样做时,我能够在浏览器中看到XML输出:

echo $doc->saveXML();

没有输出错误或其他任何错误......

我正在注入的MySQL列是'长文'

提前谢谢!!

2 个答案:

答案 0 :(得分:4)

首先,您需要获取XML字符串,正如您所猜测的那样,使用 saveXML() 方法:

$xmlraw = $doc->saveXML();


然后,您需要插入此值;但你必须正确地逃避它

使用您用于连接数据库的API提供的特定函数,可以转义字符串以将其注入SQL查询,因为您正在使用mysql_*函数,你将使用mysql_real_escape_string()

$escapedString = mysql_real_escape_string($xmlraw);


现在,您可以在SQL查询中输入字符串:

$query = "INSERT INTO xmlTestTable (XMLString) VALUES ('$escapedString')";

当然,您也可以像使用sprintf一样使用sprintf。

答案 1 :(得分:1)

请使用mysql_real_escape_string转义xml - 这将解决您的问题,并且它将使您免于sql注入攻击。