2016-07-25 73 views
0

我需要使用多個查詢並將它們發送出去以及爲了as3目的而形成xml。通過MySQL多重查詢XML格式不正確

當我只使用一個查詢時,一切正常。

問題在多查詢操作時開始。

現在,當// XML頭被隱藏我得到一個結構打印在屏幕上,它看起來不錯。

但當頭那張啓用,沒有什麼工作!

<?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

我經常在PHP和其他語言中看到這一點。不要構建XML的字符串連接。 PHP使用'createElement()','appendChild()'和其他方法具有像SimpleXML和DomDocument這樣的專用類。記住XML不是一個文本文件。 – Parfait

+0

另外,請解釋或更好地顯示:*但是,當頭啓用,沒有任何工作!*。屏幕回顯是否使用多個查詢切斷XML?這可能是一個as3問題,而不是PHP。 – Parfait

+0

感謝您的回覆Parfait!所以,我應該使用另一種方法,而不是concadenation。我會稍後再看看他們(simpleXML),..迴應secon部分,..現在我正在瀏覽器中執行php,..當我去as3的作品(但這隻發生在單行判斷查詢/ mysql),......嘿!我正準備把所有的東西都發送出去,但是在我到處碰觸之前,突然間一切都像魅力一樣飛舞。這是我做的,.. – Pixel2Media

回答

0

早些時候,我用「回聲」,..現在,而不是香港專業教育學院把「printf」上有,..但只有一些線,我不知道,如果:

請看看我的代碼這是原因......但現在起作用。它被扔我

「嚴格標準:mysqli_next_result():沒有一個結果集請叫mysqli_more_results()/ mysqli的:: more_results()來檢查是否調用這個函數/方法「所以尋求幫助,我發現這條線有:

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

上解決了對XML錯誤的問題。

<?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(); 
    ?> 

以後從來就不得不序列化的XML輸出很容易:d

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

但現在..我怎麼輸出serialIDs從包含類別名稱的數組元素相關聯。像...

如果name = 「1」,然後將其命名= 「firtsArrayChild」

什麼想法? 但我認爲那是另一首歌曲,那裏有另一個問題!謝謝