• 締切済み

XML/SerializerでMySQLデータをXML出力出来ない

XML/SerializerでMySQLデータをXML出力出来ない 以下のPHPでXML/Serializerを利用してXML出力したいのですが エラーにて正常に表示出来ず困っております。 (サーバはhetemlのレンタルサーバでphp5を利用しています) 【エラー内容(Firefoxで表示)】 XML パースエラー: 構文エラーです。 URL: http://対象url 行番号: 1, 列番号: 1:Connected successfully<br /> ^ 【サーバからブラウザへの出力】 Connected successfully<br /> <b>Warning</b>: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in <b>対象PHP </b> on line <b>22</b><br /> <?xml version="1.0" encoding="UTF-8"?> <result /> 【対象PHP】 <?php require_once 'XML/Serializer.php'; $con = mysql_connect("ホスト名","ユーザ名","パスワード") or die("Could not connect"); print "Connected successfully"; $options = array( "indent" => " ", "linebreak" => "\n", "typeHints" => false, "addDecl" => true, "encoding" => "UTF-8", "rootName" => "result", "defaultTagName" => "item", ); $serializer = new XML_Serializer($options); $sql = "SELECT * FROM テーブル名 ORDER BY id ;"; $result = mysql_query( $sql ); $valArr = array(); while( $val = mysql_fetch_assoc( $result ) ){   ←22行目 $valArr[] = $val; } $status = $serializer->serialize($valArr); if( $status === true ) { $xml = $serializer->getSerializedData(); header ("Content-Type: text/xml; charset=UTF-8"); echo $xml; exit; } exit; mysql_close($con); ?> 以下のサイトを参考にしております。 http://d.hatena.ne.jp/haru-komugi/20080617/1213629719 宜しくお願い致します。

みんなの回答

回答No.1

こんばんは。私も余り詳しくないので、とんちんかんな説明をしてしまったらごめんなさいね。 こちらのサイト http://bg.pi-ppi.com/page/n01/000132.html http://webtech-walker.com/archive/2007/04/06023523.html http://manual.xwd.jp/function.mysql-fetch-assoc.html を参考にしてください。 エラーの原因は、 mysql_fetch_assoc($result) この時点で$resultの中身は「FALSE」になっています。質問者様が挙げたコードは、私の環境でも動作しませんでした。上に上げたサイトを参照してもらうと、MySQLに接続後に使用するDBを選択するようなコードが書かれています。 以下修正したコードです。私のローカルの環境では動作します。参考にしてください。 <?php require_once 'XML/Serializer.php'; // $hostname = "localhost"; $uname = "ユーザ名"; $upass = "パスワード"; $dbname = "データベース名"; $tblname = "テーブル名"; // MySQLに接続 $con = mysql_connect($hostname, $uname, $upass) or die("Could not connect"); // print "Connected successfully"; // 使用するDBを選択 mysql_select_db($dbname, $con); // $options = array( "indent" => " ", "linebreak" => "\n", "typeHints" => false, "addDecl" => true, "encoding" => "UTF-8", "rootName" => "result", "defaultTagName" => "item", ); $serializer = new XML_Serializer($options); // SQL実行 $sql = "SELECT * FROM {$tblname} ORDER BY id;"; $result = mysql_query($sql, $con); // 問い合わせ結果 $valArr = array(); while($val = mysql_fetch_assoc($result)){ $valArr[] = $val; } $status = $serializer -> serialize($valArr); if($status === true){ $xml = $serializer -> getSerializedData(); header ("Content-Type: text/xml; charset=UTF-8"); echo $xml; // exit; } // MySQLへの接続を切断 mysql_close($con); ?>