0

PHPでXMLファイルを生成しました。このファイルは、ローカルホストで完全にxml出力を生成し、同時にサーバーにアップロードすると失敗します。
エラー画面エラーのスクリーンショット コードは次のとおりです。

<?php  

    include_once("database/db.php");

    $sqlNews    =   "SELECT * FROM news";

    $runSqlNews =   mysql_query($sqlNews);

    while ($rowSqlNews  =   mysql_fetch_array($runSqlNews)) 
        $arrSqlNews[]   =   $rowSqlNews;

        header('Content-type: text/xml');
        header('Pragma: public');
        header('Cache-control: private');
        header('Expires: -1');
        echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

        echo '<xml>';

    for($i=0;$i<count($arrSqlNews);$i++) 
    {
        echo "<news>";
            echo "<newsId>".$arrSqlNews[$i][id]."</newsId>";
            echo "<newsAuthor>".$arrSqlNews[$i][news_author]."</newsAuthor>";

            echo "<description>".$arrSqlNews[$i][news_description]."</description>";
            echo "<newsText> <![CDATA[".$arrSqlNews[$i][news_text]. "]]></newsText>";
            echo "<plainNewsDescription>".$arrSqlNews[$i][plain_news_description]."</plainNewsDescription>";
            echo "<plainNewsTitle>".$arrSqlNews[$i][plain_news_title]."</plainNewsTitle>";
            echo "<newsUrl> <![CDATA[". $arrSqlNews[$i][news_url]. "]]></newsUrl>";
            echo "<newsCategory> <![CDATA[". $arrSqlNews[$i][category]. "]]></newsCategory>";
            echo "<image>http://metroplots.com/images/members/".$arrSqlNews[$i][news_image]."</image>";
            echo "<createdOn>".$arrSqlNews[$i][created_on]."</createdOn>";
        echo "</news>";       
    }
        echo '</xml>';
?>

変更後の新しい xml ファイル

<?php
    ini_set('error_reporting', E_ALL);

    include_once("database/db.php");

    $dbConn     = new mysqli($dbHost, $dbUserName, $dbUserPasswrd, $database);;

    $sqlNews    = "SELECT id, news_author,news_description,
                          news_text, news_url, category, news_image, created_on
                     FROM news";

    $stmt   = $dbConn->prepare($sqlNews);
    $stmt->execute();

    $stmt->bind_result($id, $newsAuthor, $newsDescription, $newsText, $newsUrl, $Category, $newsImage, $createdOn);


    header('Content-type: text/xml');
    header('Pragma: public');
    header('Cache-control: private');
    header('Expires: -1');

    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    echo '<xml>';
    echo "<news>";

    while($stmt->fetch())
    {
        echo "<newsId>".$id."</newsId>";
        echo "<newsAuthor>".$newsAuthor."</newsAuthor>";
        echo "<description>".$newsDescription."</description>";
        echo "<newsText> <![CDATA[".$newsText. "]]></newsText>";            
        echo "<newsUrl> <![CDATA[". $newsUrl. "]]></newsUrl>";
        echo "<newsCategory> <![CDATA[". $Category. "]]></newsCategory>";
        echo "<image>http://metroplots.com/images/members/".$newsImage."</image>";
        echo "<createdOn>".$createdOn."</createdOn>";        
    }

    echo "</news>";       
    echo '</xml>';

    $stmt->close();
    $dbConn->close();
?>

どこで間違ったのか教えてください。前もって感謝します !!!

4

3 に答える 3

1

PHP 出力バッファリングを無効にしてみましたか?

PHP.ini:output_buffering = Offまたは既存の設定をコメントアウト: ;output_buffering = On.

設定を変更した後は、Web サーバーを再起動することを忘れないでください。

于 2013-04-24T01:43:15.607 に答える
1

ここで正確に何がうまくいかないのかを言うのは難しい. デバッグするには、スクリプトの先頭に a を追加するini_set('error_reporting', E_ALL);か、php エラー ログを監視します。

スクリプト アーキテクチャには他にもいくつか問題があります

  • mysql拡張機能は使用しないでください。代わりにmysqliまたはPDOを使用してください。

  • ヘッダーは一度だけ送信する必要があります。それらをループから一番上に移動します

  • 結果を 2 回ループするのはなぜですか? ループを削除し、forその内容を while ループに移動します。ループ内で変数$arrSqlNewsを置き換えて$rowSqlNews、インデックスアクセサーを削除します[$i]

簡単な例

while( $rowSqlNews = mysqli_fetch_assoc( $mysqliResult ) ) 
{
    echo $rowSqlNews['yourdbCol1'];
}
于 2012-12-13T06:52:05.677 に答える
-1

アップロード ツールがファイルをバイナリ セーフな方法で転送していないと思われます。ローカル マシンとリモート マシンのコピーのファイル サイズを比較してみてください。

于 2012-12-13T06:17:49.247 に答える