sql >> Databasteknik >  >> RDS >> Mysql

Föreach loop använder sträng för att mata ut XML

foreach kan iterera vilken array eller objekt som helst som implementerar traverserbara. Resultatet av PDOStatement::fetch() är rekordet/raden. Ge bara uttalandet till foreach.

foreach($statement as $row) { ...   

Det bättre API:et för sådana dumpar är XMLWriter . Den skriver resultatet direkt till en stream, utan att först lagra hela dokumentet i minnet. Att använda ett XML-API tar också hand om flykten efter behov. Här är ett litet exempel:

$statement = [
  [ 'name' => 'one', 'location' => '...', /* ... */],
  [ 'name' => 'two', 'location' => '...', /* ... */]
];

$xmlWriter = new XMLWriter();
$xmlWriter->openUri('php://stdout');

$xmlWriter->startDocument();
$xmlWriter->setIndent(2);
$xmlWriter->startElement('markers');
foreach ($statement as $row) {
  $xmlWriter->startElement('marker');
  $xmlWriter->writeAttribute('name', $row['name']);
  /* other attributes ... */
  $xmlWriter->endElement();
}
$xmlWriter->endElement();
$xmlWriter->endDocument();

Utdata:

<?xml version="1.0"?>
<markers>
 <marker name="one"/>
 <marker name="two"/>
</markers>

I DOM skapar du, lägger till och konfigurerar noder. Här är ett litet exempel:https://stackoverflow.com/a/21760903/2265374




  1. 2 sätt att infoga en ny rad i en sträng i SQLite

  2. hur genererar rapporten mellan de två datumen med datepicker,ajax,php,mysql.?

  3. MySQL räkna komplexa frågeresultat?

  4. Trunkering av alla tabeller i en Postgres-databas