0

私のPHPファイルでは、以下のようなクエリを使用して大量の情報を読み込んでいます:

SELECT  GROUP_CONCAT(CONCAT('<comment><body><![CDATA[',body,']]></body>','<replier>',if(screen_name is not null and !anonymous,screen_name,''),'</replier>','<created>',created,'</created></comment>') SEPARATOR '')
                        FROM   idiscussion
                        LEFT JOIN
                               users
                        ON     idiscussion.uid=users.id
                        WHERE  idiscussion.iask_id = 1

はい、xml 形式に似ていますが、PHP で解析するのは簡単ではないようです。

後で簡単に解析するために使用する形式に関する推奨事項はありますか?

私のように、それらをすべて連結する必要があります。

このケースについて考えることができます: 一度に 1 つのトピックとこのトピックの下のディスカッションを取得するには。1 つのトピックが複数のディスカッションに対応しています。連結せずに 1 つのクエリでそれを行うにはどうすればよいでしょうか?

4

4 に答える 4

2

SQL データベースからデータを取得する場合は、SQL を使用してテキスト形式に変換するのではなく、通常のクエリを実行し、SQL 関数を使用して与えられた結果を操作する方がはるかに簡単です。

他の PHP クライアントにデータをシリアル化する必要が生じた場合は、PHP の標準シリアル化形式をお勧めします。

于 2009-05-27T21:17:22.767 に答える
0

データをすべて連結せずに取得するだけではないのはなぜですか?

SELECT body,
       IF(screen_name IS NOT NULL AND !anonymous, screen_name, '') AS replier,
       created
FROM   idiscussion
LEFT JOIN
       users
ON     idiscussion.uid = users.id
WHERE  idiscussion.iask_id = 1

これは元のクエリと同じくらい速く実行され、他の結果セットと同じようにそのデータにアクセスできます。PDO を使用せずに MySQL を使用していると仮定します。

$result = mysql_query($sql);
if ($result) {
    while ($row = mysql_fetch_assoc($result)) {
        // $row is an associative array containing the current row's data.
    }
}

XML を作成する必要があるが、生の形式でデータにアクセスしたい場合は、PHP で作成するだけです。

$xml =
    '<comment>' .
         '<body><![CDATA[' . $row['body'] . ']]></body>' .
         '<replier>' . $row['replier'] . '</replier>' .
         '<created>' . $row['created'] . '</created>' .
    '</comment>';

データがまだサニタイズされていない場合は、データをエスケープする必要がある場合があります。XMLWriterなどの XML ビルダーを使用することもできますが、それはこの質問の範囲外です。

于 2009-05-27T23:42:48.730 に答える
0

データ構造によって異なりますが、値のリストは、join() を使用してセミコロンで区切られたエントリのリストとして簡単に保存でき、split() を使用して簡単に解析できます。

これは非常に単純ですが、少し複雑なデータには適していない場合があります。

コメントへの回答: データにセミコロンが含まれている場合は、必要に応じてエスケープする必要があります。

于 2009-05-27T20:44:52.957 に答える
0

DOMまたはSimpleXMLを使用して XML ファイルを解析できますが、JSONまたはYAMLも使用できます。PHP の高レベルのパーサーに依存できるため、すべてが非常に使いやすいです。フォーマットをどのように使用するかによって、長所と短所があります。

于 2009-05-27T20:49:15.913 に答える