我似乎无法弄清楚如何将使用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列是'长文'
提前谢谢!!
答案 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注入攻击。