【问题标题】:Merging MySQL and XML data together and sorting them将 MySQL 和 XML 数据合并在一起并对它们进行排序
【发布时间】:2012-05-11 22:43:41
【问题描述】:

我正在寻找一种将 MySQL 和 XML 数据合并在一起的方法,因此我可以按时间戳对它们进行排序。理想的情况是这样的:

SELECT timestamp, title
FROM news
UNION ALL
SELECT timestamp, title 
FROM xmlsource('local.xml')
ORDER BY timestamp DESC

这样的事情可能吗?或者他们是否有任何其他方式来合并数据源并对它们进行排序?感谢您对正确方向的任何指示。

【问题讨论】:

  • 可能在临时表中加载这个xml?
  • 我已经考虑过了,但是我有数百个具有不同 XML 提要的动态页面,还有几十个用户同时使用它们。所以临时表看起来不像一个选项(或我必须制作数百个)。

标签: php mysql xml


【解决方案1】:

我不知道这会有多有效,但你可以自己测试一下。这里是:

<?php
$sql = 'SELECT timestamp, title FROM news ORDER BY timestamp DESC';
$run = mysql_query( $sql, $link );

$result = array();
if( $run && mysql_num_rows( $run ) ) {
    while( ( $fetch = mysql_fetch_assoc( $run ) ) !== false ) {
        $time = $fetch[ 'timestamp' ];
        $title = htmlspecialchars( $fetch[ 'title' ], ENT_COMPAT, 'UTF-8' );

        $result[ $time ][] = $title;
        // this is an array, in case multiple title have same timestamp.
    }
}

$xml = simplexml_load_file( 'local.xml' );
$xpath = $xml->xpath( '//story' );

foreach( $xpath as $story ) {
    $time = $story->time;
    $title = (string) $story->headline;

    $result[ $time ][] = $title; // append this to the results array.
}

// sort by timestamp ascending
arsort( $result );
?>

希望对你有帮助。

【讨论】:

  • 谢谢!使用 php 数组来合并所有不同的源是一个正确方向的大指针。我确实制作了一个通用数组$thearray=array();,并使用 array_push 填充了所有需要的变量。需要的第一个字段是 UNIX 时间戳。 array_push($thearray, array ("unixtime" =&gt; $time, "story" =&gt; $story));,使用rsort($thearray); 我想要的一切都完成了:)
猜你喜欢
  • 2020-08-09
  • 2011-09-21
  • 2022-10-04
  • 1970-01-01
  • 2018-06-15
  • 2023-03-18
  • 2016-09-23
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多