Ik probeer met een functie, een xml bestand uit te lezen en vervolgens deze met een query in te voeren in de database. Aleen de xml die hij krijgt lijkt wel niet uitgelezen te kunnen worden. Dus ik ben benieuwd of iemand dat hier ziet.
<?php
////////////////////////////////////////
//XML in string laden via simplexml
$xml = simplexml_load_string($getXML);
//Loop door de records
foreach ($xml->record as $children) {
$veldnamen = "";
$childnamen = "";
//voor ieder child in het record:
foreach($children->children() as $child) {
//veldnamen en values in variabelen zetten voor query
$veldnamen .= $child->getName() . ",";
$childnamen .= "'" . $child . "'" . ",";
}
//string een char korten maken ivm laatste komma
$veldnamen = substr($veldnamen, 0, -1);
$childnamen = substr($childnamen, 0, -1);
//Query doorvoeren met veldnamen en value variabelen uit foreach
mysql_query("INSERT INTO $tableName ($veldnamen) VALUES ($childnamen)");
}
Ik krijg er wel gewoon de waardes uit, in $veldnamen en $childnamen.
Maar je escape't de waardes niet. Want bij <functie> krijg jij dit: 'IT'er'.
Spot the error.
dus hier gaat het fout:
<?php
////////////////////////////////////////
//XML in string laden via simplexml
$xml = simplexml_load_string($getXML);
?>
[size=xsmall]Toevoeging op 14/04/2011 16:05:02:[/size]
Gerben Jacobs op 14/04/2011 15:59:51
Ik krijg er wel gewoon de waardes uit, in $veldnamen en $childnamen.
Maar je escape't de waardes niet. Want bij <functie> krijg jij dit: 'IT'er'.
Spot the error.
Het zou best kunnen dat $veldnamen en $childnamen het doen. Maar omdat $xml geen waarde bevat, kan hier niks mee gedaan worden.
Wat ik best wel raar vind want $getXML geeft wel degelijk een xml documentje door.
//Loop door de records
foreach ($xml->record as $children) {
$veldnamen = "";
$childnamen = "";
//voor ieder child in het record:
foreach($children->children() as $child) {
//veldnamen en values in variabelen zetten voor query
$veldnamen .= $child->getName() . ",";
$childnamen .= "'" . $child . "'" . ",";
}
//string een char korten maken ivm laatste komma
$veldnamen = substr($veldnamen, 0, -1);
$childnamen = substr($childnamen, 0, -1);
Zo werkt het inderdaad bij mij ook, maar dit is geen oplossing aangezien ik een soap server heb. Dus op de client wordt er een functie opgevraagd. In dit geval insertTable(); Daarin geef ik de configuratie mee, de tabel waarin het ingevoerd moet worden en de xml die uitgelezen moet worden. Deze geef ik gewoon mee in een string. Als ik deze daarna return in mijn functie, zie ik wel degelijk dat hij is ontvangen. Alleen kan er in mijn server niks mee gedaan worden.
Terwijl ik bovenstaande code in mijn client heb gedraaid, en dan doet hij het wel.