0

utf8エンコーディングでSQLテーブルの値を抽出することで解決策を見つけようとしましたが、うまくいきません。次のコードは、「test.xml」という名前の適切な XML ファイルをエンコードせずにエクスポートします。助言がありますか?

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "admin";
$dbname = "My_DB";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
$sql = "SELECT product_id, model, image  FROM product";
$q = mysql_query($sql)or die(mysql_error()); 


$xml = "<products>";
while($r = mysql_fetch_array($q)){

  $xml .= "<product>";

 $xml .= "<id>";  
 $xml .= "<![CDATA[".$r["product_id"]."]]>";
 $xml .= "</id>";
 $xml .= "<name><![CDATA[" . $r["model"] . "]]></name>";
 $xml .= "<image>".$r['image']."</image>";   
 $xml .= "</product>";  
}

$xml .= "</products>";
$sxe = new SimpleXMLElement($xml);
$sxe->asXML("test.xml");

?>
4

1 に答える 1

0

ここで行っているのは、すべてのデータを変数に追加してから、それをファイルに出力することです。最後にだけ使用するのではなく、必要に応じて XML ファイルをフォーマットしてみてはSimpleXMLElementいかがでしょうか。つまり、次のようなものです。

[...]
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$xml .= "<products>";
while($r = mysql_fetch_array($q)){

  $xml .= "<product>";

 $xml .= "<id>";  
 $xml .= "<![CDATA[".$r["product_id"]."]]>";
 $xml .= "</id>";
 $xml .= "<name><![CDATA[" . $r["model"] . "]]></name>";
 $xml .= "<image>".$r['image']."</image>";   
 $xml .= "</product>";  
}

$xml .= "</products>";

echo $xml;

これにより、独自に作成された XML ファイルが生成されます。ずっと使っているわけではないのでSimpleXMLElement、代わりに XML 要素と属性を手動で追加しています。ここを見て、他にどのようにファイルを作成できたかを確認できます!

それが役に立てば幸い!

于 2013-08-25T17:22:55.167 に答える