2016-07-25 7 views
0

Ich muss mehrere Abfragen verwenden und sie auch als xml for as3 Zwecken gesendet.XML fehlerhaft über MySQL Multi-Abfrage

Wenn ich nur eine Abfrage verwende, funktioniert alles gut.

Problem beginnt, wenn Multi-Abfrage funktioniert.

Gerade jetzt, wenn // XML Header ist ausgeblendet Ich bekomme eine Struktur auf dem Bildschirm gedruckt und es sieht gut aus.

Aber wenn Header aktiviert geht, geht nichts!

Bitte nehmen Sie sich einen Blick auf mein Code:

<?php 
$dbHost = "localhost"; 
$dbUser = "root"; 
$dbPass = ""; 
$dbName = "test"; 
$dbTable = "pizzaroma"; 

$mysqli = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName); 
if ($mysqli->connect_errno) 
echo "la conection ha fallado: ".$mysqli->connect_errno; 

$query = "SELECT * FROM ".$dbTable." WHERE cat='pizza' AND act='1' ORDER BY ID ASC; "; 
$query .= "SELECT * FROM ".$dbTable." WHERE cat='pasta' AND act='1' ORDER BY ID ASC; ";  

if ($mysqli->multi_query($query)) { 
    // header("Content-type: text/xml"); 
     echo "<?xml version='1.0' encoding='UTF-8'?>"; 
     echo "<pics>"; 
do { 
    echo "<theme name='temporaly'>"; 
    if ($result = $mysqli->store_result()) { 

     while ($row = $result->fetch_assoc()) { 

      echo "<pic name='".$row['NAME']."' desc='".$row['DESCES']."' price='".$row['PRICE']."'/>"; 
      echo "</pic>"; 
     } 
     $result->free(); 
    } 
     echo "</theme>"; 
    if ($mysqli->more_results()) {   
    } 

    } 
    while ($mysqli->next_result()); 
     echo "</pics>"; 
} 

    $mysqli->close(); 
    ?> 
+0

Ich sehe das so oft in PHP und anderen Sprachen. Erstellen Sie keine String-Verkettung von XML. PHP hat dedizierte Klassen wie SimpleXML und DomDocument mit 'createElement()', 'appendChild()' und anderen Methoden. Remember XML ist keine Textdatei. – Parfait

+0

Bitte erläutern oder besser zeigen: * Aber wenn Header aktiviert ist, funktioniert nichts! *. Ist der Bildschirm echo schneiden XML mit mehreren Abfragen aus? Dies könnte ein as3-Problem sein, nicht PHP. – Parfait

+0

danke für die Antwort Parfait! Also sollte ich eine andere Methode als Konkavation verwenden. Ich werde einen Blick auf sie später (SimpleXML), .. Reagieren auf secon Teil, .. Jetzt bin ich Ausführen der PHP im Browser, .. wenn funktioniert, ich gehe zu As3 (aber das ist nur passiert mit Single-Line-Verurteilte Abfrage/mysql), ...... hey! Ich wollte es alles schicken, aber bevor ich hier und da berührt habe, ... plötzlich fliegt alles wie ein Zauber. hier ist was ich getan habe .. – Pixel2Media

Antwort

0

früher i "Echo" verwendet haben, .. nun statt ive es "printf" setzen, .. aber nur ein paar Zeilen, ich bin nicht sicher, ob Das war der Grund .. aber jetzt funktioniert. es wurde mir die

„Strenge Standards werfen: mysqli_next_result (.): Es gibt keine nächste Ergebnis gesetzt ist Bitte rufen Sie mysqli_more_results()/mysqli :: more_results() zu überprüfen, ob diese Funktion/Methode aufrufen "so der Suche nach Hilfe ich diese Linie dort gefunden haben:

do{} while(mysqli_more_results($db) && mysqli_next_result($db)); 

, die das Problem für xML-Fehler behoben.

<?php 


$dbHost = "localhost"; 
$dbUser = "root"; 
$dbPass = ""; 
$dbName = "test"; 
$dbTable = "pizzaroma"; 

$mysqli = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName); 
if ($mysqli->connect_errno) 
echo "la conection ha fallado: ".$mysqli->connect_errno; 

$query = "SELECT * FROM ".$dbTable." WHERE cat='pizza' AND act='1' ORDER BY ID ASC; "; 
$query .= "SELECT * FROM ".$dbTable." WHERE cat='pasta' AND act='1' ORDER BY ID ASC; "; 
$query .= "SELECT * FROM ".$dbTable." WHERE cat='carne' AND act='1' ORDER BY ID ASC; "; 


if ($mysqli->multi_query($query)) { 
     header("Content-type: text/xml"); 
     printf("<?xml version='1.0' encoding='UTF-8'?>"); 
     printf("<pics>"); 
do { 
    printf("<theme name='temporaly'>"); 
    if ($result = $mysqli->store_result()) { 

     while ($row = $result->fetch_assoc()) { 

      echo "<pic name='".$row['NAME']."'/>"; 

     } 
     $result->free(); 
    } 
     echo "</theme>"; 

    } 
    while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); 

     echo "</pics>"; 
} 

    $mysqli->close(); 
    ?> 

später Ive hatte die XML-Ausgabe war es einfach zu serialisiert: D

>> $i=1; and ... do {printf("<theme name='".$i++."'>"); 

aber jetzt .. Wie verbinde ich Ausgang serialIDs auf Elemente von Array, das Kategorienamen enthält. so etwas wie ...

wenn name = "1" dann name = "firtsArrayChild"

irgendeine Idee? aber ich denke, das ist ein anderes Lied für eine andere Frage da draußen! Danke