我想将我的mysql查询转换为 XML ,为此我使用了本教程的代码:http://www.codediesel.com/php/converting-mysql-queries-to-xml/我必须自定义它以使用 PDO 而不是 mysql 函数。 这是代码:
function sqlToXml($queryResult, $rootElementName, $childElementName)
{
$xmlData = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
$xmlData .= "<" . $rootElementName . ">";
while($record = $queryResult->fetch(PDO::FETCH_OBJ))
{
/* Create the first child element */
$xmlData .= "<" . $childElementName . ">";
for ($i = 0; $i < $queryResult->columnCount(); $i++)
{
$fieldName = $queryResult->getColumnMeta($i);
/* The child will take the name of the table column */
$xmlData .= "<" . $fieldName . ">";
/* We set empty columns with NULL, or you could set
it to '0' or a blank. */
if(!empty($record->$fieldName))
$xmlData .= $record->$fieldName;
else
$xmlData .= "null";
$xmlData .= "</" . $fieldName . ">";
}
$xmlData .= "</" . $childElementName . ">";
}
$xmlData .= "</" . $rootElementName . ">";
return $xmlData;
}
但是当我尝试执行代码时,我收到此错误: 注意: /opt/lampp/htdocs/promos/t.php 中的数组到字符串转换 42
注意: /opt/lampp/htdocs/promos/t.php 中的数组到字符串转换 42
注意: /opt/lampp/htdocs/promos/t.php 中的数组到字符串转换 42
注意: /opt/lampp/htdocs/promos/t.php 中的数组到字符串转换 42 nullnullnullnull
42 这一行是:
if(!empty($record->$fieldName))
你对此有任何想法吗?谢谢:))
答案 0 :(得分:0)
你想要fieldname,所以你必须从getColumnMeta()返回的关联数组中检索它,你错误地认为它返回了一个字符串,所以只需替换你的下一行:
$fieldName = $queryResult->getColumnMeta($i);
这个:
$fieldName = $queryResult->getColumnMeta($i);
$fieldName = $fieldName['name'];
应该使$fieldName
包含字段名称,以便其他代码可以使用。
答案 1 :(得分:-1)
函数getColumnMeta返回一个数组。不是一个字符串。 除此之外,它标志着实验性。我不会在生产代码上使用它,直到它变得更稳定。
但我认为这应该有用
function sqlToXml($queryResult, $rootElementName, $childElementName)
{
$xmlData = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
$xmlData .= "<" . $rootElementName . ">";
while($record = $queryResult->fetch(PDO::FETCH_OBJ))
{
/* Create the first child element */
$xmlData .= "<" . $childElementName . ">";
for ($i = 0; $i < $queryResult->columnCount(); $i++)
{
$colum = $queryResult->getColumnMeta($i);
$fieldName = $column['name'];
/* The child will take the name of the table column */
$xmlData .= "<" . $fieldName . ">";
/* We set empty columns with NULL, or you could set
it to '0' or a blank. */
if(!empty($record->$fieldName))
$xmlData .= $record->$fieldName;
else
$xmlData .= "null";
$xmlData .= "</" . $fieldName . ">";
}
$xmlData .= "</" . $childElementName . ">";
}
$xmlData .= "</" . $rootElementName . ">";
return $xmlData;
}