【问题标题】:Generating an RSS feed from MySQL Database从 MySQL 数据库生成 RSS 提要
【发布时间】:2014-02-24 00:15:58
【问题描述】:

这是我的 rss.php 文件的代码:

<?php header("Content-type: text/xml"); ?>
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; ?>

<?php
mysql_connect("localhost", "database_user", "password") or die(mysql_error()); 
mysql_select_db("database_name") or die(mysql_error()); 

$cityquery = "SELECT * FROM cities ORDER BY RAND() LIMIT 1";
$cityresult = mysql_query($cityquery);
$cityrow = mysql_fetch_row($cityresult);
$city = $cityrow[0];

$servicequery = "SELECT * FROM services ORDER BY RAND() LIMIT 1";
$serviceresult = mysql_query($servicequery);
$servicerow = mysql_fetch_row($serviceresult);
$service = $servicerow[0];
?>

<?php
$servicename = ucwords($service);
$cityname = ucwords($city);
$servicelink = str_replace(" ","-",$service);
$citylink = str_replace(" ","-",$city);
?>

<rss version="2.0">
<channel>
  <title>My Website</title>
  <link>http://local.mywebsite.com</link>
  <description>This is my description.</description>
  <pubDate><?echo date('Y/m/d H:i:s');?></pubDate>

<?php foreach( range( 1, 25 ) as $i ): ?>

<item>
    <title><?php echo $servicename; ?> in <?php echo $cityname; ?></title>
    <pubDate><?echo date('Y/m/d H:i:s');?></pubDate>
    <link>http://local.mywebsite.com/<?php echo $servicelink; ?>/<?php echo $citylink; ?></link>
    <description><?php echo $servicename; ?> in <?php echo $cityname; ?> - <?php echo $servicename; ?> <?php echo $cityname; ?> - <?php echo $cityname; ?> <?php echo $servicename; ?> - <?php echo $cityname; ?> - <?php echo $servicename; ?></description>
</item>

<?php endforeach; ?>

</channel>
</rss>

从上面的代码可以看出,这个 RSS 提要从 MySQL 数据库中获取城市和服务的列表。 RSS 提要中有 25 个项目,问题是它们都是完全相同的项目。需要进行哪些更改才能基本上创建一个循环,以便每个项目实际上显示数据库中的不同城市/服务?

如果有人需要澄清,请随时告诉我。

【问题讨论】:

    标签: php mysql sql xml rss


    【解决方案1】:

    您可以在 while 循环中使用mysql_fetch_array,并回显它们。

    添加如下内容:

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo $row['cityname'];
    }
    

    mysql_* 函数已弃用并将被删除,因此您应该查看MySQLiPDO。正确使用这些函数还可以保护您免受 SQL 注入和其他漏洞的侵害。

    【讨论】:

    • 您介意进一步解释一下我需要在代码中的哪个位置实现它吗?感谢您的宝贵时间。
    • 当然,我会在一分钟内编辑帖子并进行更新。 $row['cityname'] 其中 cityname 是您的列的名称。
    • 顺便问一下,城市和服务表究竟是如何协同工作的?从您的代码来看,似乎一项服务属于一个城市。我对么?你如何在数据库中约束这两个?
    • 城市和服务是完全独立的,可以以任何方式配对。我们在每个城市提供每一项服务。
    • 所以你想输出 cityname - 然后是每个城市的所有服务?
    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多