2011-10-31 7 views
0

は、私はPDO経由 DomDocument XMLが1行目から開始していません。原因XML不正なエラー

  1. は(IDに基づく)MySQLのテーブルからレコードを削除... PHPスクリプトを持って
  2. のGetそのテーブルのすべてのレコードの更新リストです
  3. は(DOMDOCUMENT経由)XMLとして

をリストを吐き出し、そして...問題は、私は、スクリプトを実行したとき、私は、次ののエラーメッセージが表示されていることである私はXMLのためのXHRタブをチェックする場合:

XML Parsing Error: XML or text declaration not at start of entity Location: moz-nullprincipal:{45b1a3cb-ef07-42c9-b4bd-b15ba996fb4c} Line Number 3, Column 1:

^

FirebugのでXHRタブの応答セクションを見て、私は、XMLは、ページの最上部の下に始まることに気づきました。正確には3行目。

だから... ...私は (すなわちhttp://mylocalsite.dev/ajax-delete-post-v02.php?dlt=40)を削除するレコードのIDを含むブラウザから直接電話をかけた

私は、ブラウザでの(ほとんど同じエラー(この時間を持っ請求):

XML Parsing Error: XML or text declaration not at start of entity Location: http://mylocalsite.dev/ajax-delete-post-v02.php?dlt=40 Line Number 3, Column 1: ^

以下は私が使用しているコードは次のとおりです。(私は単純にDBへの呼び出しを取る場合は、それが動作することに注意してくださいだから私は何か、私は余分なスペースを作成してやっていると仮定しています、しかし、私がそれを見つけることができます)

<?php 
$doc = new DOMDocument('1.0','utf-8'); 
$posts = $doc->createElement('posts'); 
$doc->appendChild($posts); 

// dynamically generate posts 

    // set DB connection vars 
    $hostname = "localhost"; 
    $database = "somedb"; 
    $username = "someuser"; 
    $password = "somepassword"; 
    $hostinfo = "mysql:host=$hostname;dbname=$database"; 

    // connect to db 
    try 
    { 
     // Create the database handler 
     $dbh = new PDO($hostinfo,$username, $password); 

     // Set the error reporting attributes 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     // Create the sql string 
     $sql_select = 'SELECT * FROM posts ORDER BY date_start DESC'; 

     // prepare the SQL statement 
     $stmt = $dbh->query($sql_select); 

     while($row = $stmt->fetch()) 
     { 
      $post = $doc->createElement('post'); 
      $post->setAttribute('id',$row['id']); 
      $p_text = $doc->createElement('text',htmlentities($row['text'])); 
      $p_date_start = $doc->createElement('date_start',$row['date_start']); 
      $p_date_end  = $doc->createElement('date_end',$row['date_end']); 
      $p_details_link = $doc->createElement('details_link',htmlentities($row['details_link'])); 

      $posts->appendChild($post); 
      $post->appendChild($p_text); 
      $post->appendChild($p_date_start); 
      $post->appendChild($p_date_end); 
      $post->appendChild($p_details_link); 
     } 

     // Close the db connection 
     $dbh = null; 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 

// for some reason this is writing it out starting on the third line??? 
echo $doc->saveXML(); 
?> 

私は取得できません。ところで、私は私がグリーンホーンだと言いましたか?

:)

私はそれを見つけたおかげ 寝台

+1

オープニングPHPタグの前に改行がありますか? の間にないものはすべて通常のテキストとして扱われるためです。 –

+0

@ Jan-Henk Nope。トップに向けてフラッシュする。新しい行はありません。 – sleeper

+0

私はこれを正しいグループに投稿しましたか?コメントはありません? – sleeper

答えて

0

。それはスペースだった。 FirePHPのための別のタグによってもたらされる。それらを削除し、whalla!

関連する問題