2009-07-20 8 views
0

Ich habe Funktionen, die die Ergebnisse von SQL-Abfragen in XML konvertieren. Nun möchte ich jedoch mit Hilfe von PHP ein XML-Dokument (das verschachtelte SQL-Anweisungen enthält) einlesen, diese Anweisungen ausführen und die SQL-Anweisung im Wesentlichen durch die Ergebnisse ersetzen.SQL-Anweisungen in XML durch Abfrageergebnisse ersetzen

(Nur ein Hinweis, PostgreSQL verwenden)

Zum Beispiel:

<customers> 
    <customer> 
     <info>* from customer for where customer = 1</info> 
      <details> 
      <po> 
       <info>* from po join where customer = "master" customer</info> 
      </po> 
      <order_history> 
       <info>* from order_history where customer = "master" customer</info> 
      </order_history> 
      </details> 
    </customer> 
    <customer> 
     <info>* from customer for where customer = 2</info> 
      <details> 
      <po> 
       <info>* from po join where customer = "master" customer</info> 
      </po> 
      <order_history> 
       <info>* from order_history where customer = "master" customer</info> 
      </order_history> 
      </details> 
    </customer> 
    ... 
</customers> 

Ich bin zuversichtlich, in dem XML-Dokument in dem Lese und die DB mit den SQL-Anweisungen abfragen, aber ich bin nicht sicher, wie man die Ergebnisse in der XML-Struktur auffüllt.

Eine Art Textaustausch? Oder simultan ein doppeltes XML-Dokument mit Ergebnissen erstellen? Irgendwelche Vorschläge? Dank ...

Außerdem sind diese Abfragen im Sinne korreliert, dass die Unterabfragen (oder höhere Ebene Anfragen) sind abhängig von der unteren Ebene Anfragen ...

Antwort

1

Das mag nicht das sein, wonach Sie suchen, aber ich schlage vor, SQL in das XML nicht einzuschließen, wenn Sie es vermeiden können. Wenn Ihre Anwendung wächst, möchten Sie möglicherweise etwas anderes verwenden, um Daten zu speichern (Memcache?) Und dann müssen Sie einen SQL -> (etwas anderes) Übersetzer schreiben.

So etwas wie:

<customers> 
    <customer id="1"> 
    <fetch /> 
    <details> 
     <po> 
     <fetch /> 
     </po> 
... 

Dann in Ihrem PHP können Sie die XML mit den DOM-Methoden analysieren. Wenn Sie ein Kundentag verwenden, legen Sie die "aktuelle Kundennummer" fest, entfernen das untergeordnete Abruf-Tag, führen die gewünschte Abfrage aus, fügen Tags hinzu, die die Ergebnisse enthalten, und fahren dann in der Baumstruktur mit den nächsten Tags fort.

Wenn Sie das Fetch-Tag innerhalb des po-Tags drücken, können Sie die Bestelldaten des aktuellen Kunden abrufen, indem Sie den obigen Vorgang wiederholen (entfernen, abfragen, Tags hinzufügen).

Die Ausgabe enthält die Kundennummer im selben Format wie die Eingabe, wodurch die Zuordnung von Ausgabe und Eingabe erleichtert wird.

0

Ihre Frage: Wäre es eine akzeptable Leistung sein -Weitere eine andere XML-Struktur neu erstellen? Wenn ja, meine Antwort: Sie können es nicht wissen, bis Sie es versuchen.

Sie sagten, Sie haben bereits eine Funktion zum Erstellen von XML für 1 Abfrage. Jetzt können Sie eine Funktion schreiben: Take (Copy?) Das XML, das Sie aus dem SQL-Query-XML gelesen haben, und einfügen, sort of "embed" das XML aus der SQL_TO_QUERY() - Funktion (ersetzt das Abfrage?).

Wenn Sie weitere Details benötigen, geben Sie bitte weitere Details an: Mit welchen PHP-Funktionen bearbeiten Sie XML, SimpleXML? Wie groß ist die Datenbank-XML-Datei? Warum genau können Sie keine allgemeine Aussage für alle Kunden machen?