2017-11-16 17 views
0

この質問に対する回答を探しましたが、私のアプリケーションでうまくいく回答を見つけることができませんでした。<![CDATA in xml response

xml形式のSQLクエリから応答を与える必要がありますが、応答はURLであるため、cdataを使用する必要があります。ここに私のコードです。

if ($_POST['action']=="getSermon") 
{ 
    //echo"You got it"; 
    $SQL = "SELECT * FROM sermons"; 

    $allsermon = mysql_query($SQL); 
    $sermonrow = mysql_fetch_assoc($allsermon); 

    header('Content-type: text/xml; charset=utf-8'); 
    header('Pragma: public');   
    header('Cache-control: private'); 
    header('Expires: -1'); 
    $xml = '<?xml version="1.0" encoding="utf-8"?>'; 
    echo $xml; 
    echo "<SERMON_INFO>"; 
    do { 
     echo "<SERMON>";  
     echo "<ID>" . $sermonrow['id'] . "</ID>"; 
     echo "<NAME>" . $sermonrow['Name'] . "</NAME>"; 
     echo "<URL>".<![CDATA[$sermonrow['url']]>."</NAME>"; 
     //echo "<URL>". $sermonrow['url'] . "</URL>"; 
     echo "</SERMON>"; 
     mysql_free_result($result); 
    } while ($sermonrow = mysql_fetch_assoc($allsermon)); 
    mysql_free_result($allsermon); 
    echo "</SERMON_INFO>"; 
    mysql_close($db); 

    } 

これを行うとエラー500が発生し、ページが読み込まれません。

+0

'do-> while'を通常の' while'ループに変更して、不要な重複した 'mysql_fetch_assoc()'呼び出しを削除する必要があります – Scuzzy

答えて

1

正しい構文は

echo "<URL><![CDATA[".$sermonrow['url']."]]></URL>"; 

ですが、私はむしろあなたが、あなたの文書を構築するためにDOMDocumentまたはSimpleXMLのようなXMLライブラリを使用し、より複雑な、しかし、あなたがアップミキシングのような単純なエラーを起こしにくいだろうと思います終了タグ名(</NAME>を参照)。