首先,我不想要替代代码,我只想帮助完成这项工作。 使用下面的代码我想写出数据库表中的数据到xml文件,但我只得到“john”和“123”没有正确的xml标签,我的第二个foreach()不起作用,但第一个foreach()显示表的工作原理。
<?php
$dbhandle = sqlite_popen("propertydb", 0666, $err_msg);
if(!$dbhandle) die("Could not open the database");
$query = "CREATE TABLE property(pCode VARCHAR(8), price VARCHAR(6),
iFile VARCHAR(15), visits VARCHAR(3))";
if(!sqlite_query($dbhandle, $query)){ echo "table not created (maybe already
created)";
}
$query = sqlite_query($dbhandle, 'SELECT * FROM property');
$result = sqlite_fetch_all($query, SQLITE_ASSOC);
foreach ($result as $arow) {
echo '<br> Postcode: ' . $arow['pCode'] . ' Price: ' . $arow['price'] .
' Image File: ' . $arow['iFile'] . ' Visits: ' . $arow['visits'];
}
$outfilepointer = fopen("property.xml","w");
$outtext = "<estateagent> \n";
$outtext .= "<agentname>john</agentname> \n";
$outtext .= "<agentphone>123</agentphone> \n";
foreach ($result->property as $oneproperty)
{
$propertyname = $oneproperty->propertyname;
outtext .= '<property><postcode> $arow["pCode"] </postcode>
<price> $arow["price"]</price> <imagefile> $arow["iFile"] </imagefile> <visits>
$arow["visits"]
</visits> </property> \n';
}
$outtex .= "</estateagent>";
fwrite($outfilepointer, $outtext);
fclose($outfilepointer);
sqlite_close($dbhandle);
?>
这就是我的输出应该......
<estateagent>
<agentname></agentname>
<agentphone></agentphone>
<property>
<postcode></postcode><price></price><imagefile></imagefile><visits></visits>
</property>
<property>...</property>
<property>...</property>
</estateagent>
答案 0 :(得分:1)
我只是尝试使用您的代码,XML标记确实显示出来。尝试在记事本中打开它以查看。
至于你的foreach循环,你需要连接你的字符串。
outtext .= '<property><postcode> $arow["pCode"] </postcode>
<price> $arow["price"]</price> <imagefile> $arow["iFile"] </imagefile> <visits>
$arow["visits"]
</visits> </property> \n';
对于foreach,我的理解是sqlite_fetch_all
返回一个数组。您将其视为变量。
尝试使用:foreach ($result as $oneproperty)
。由于我不确定您的数据库是如何构建的,如果这对您不起作用,请使用$result
发布var_dump($result)
的输出。
上述意味着将输出文字字符串,不会插入任何变量。你需要这样做:
outtext .= '<property><postcode>'. $arow["pCode"]. '</postcode>
<price>'. $arow["price"].'</price> <imagefile>'. $arow["iFile"].' </imagefile> <visits>'.
$arow["visits"].'
</visits> </property> \n';
最后,不要使用字符串手动创建标记,而应考虑使用XML Writer。