【问题标题】:rss and json php scripts pulling data from mysqlrss 和 json php 脚本从 mysql 中提取数据
【发布时间】:2018-04-11 12:08:42
【问题描述】:

我有一个带有数据的 sql 数据库,想创建 2 个 php 脚本以 rss 格式和 json 格式输出数据,但我被卡住了,因为代码有问题……我想。我也想分别被全球认可为 rss 和 json 格式。这是我已经拥有的两组代码...

对于 rss/xml...

<?php
    header("Content-Type: application/rss+xml; charset=ISO-8859-1");
/* Define db credentials */ 
    $DBHOST = "localhost";
    $DBUSER = "1";
    $DBPASS = "2";
    $DBNAME = "3";
    $rssfeed = '<?xml version="1.0" encoding="ISO-8859-1"?>';
    $rssfeed .= '<rss version="2.0">';
    $rssfeed .= '<channel>';
    $rssfeed .= '<title>RSS Feed</title>';
    $rssfeed .= '<link>http://www.123.net</link>';
    $rssfeed .= '<description>RSS Feed</description>';
    $rssfeed .= '<language>en-us</language>';
    $rssfeed .= '<copyright>Copyright (C) 2018 123.net</copyright>';
/* connect to the db */
   $conn = new mysqli($DBHOST, $DBUSER, $DBPASS, $DBNAME);
if ($conn->connect_error) { trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR); }
mysqli_set_charset($conn,"utf8");
    $sql = "SELECT * FROM table ORDER BY updated_at DESC LIMIT 5";
$rs = $conn->query($sql);
if ($rs === false) { trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR); } else { $row_num = $rs->num_rows; }
$rssfeed .= '<item>';
        $rssfeed .= '<title>' . $title . '</title>';
        $rssfeed .= '<desc>' . $desc . '</desc>';
$rssfeed .= '</item>';
    } 
    $rssfeed .= '</channel>';
    $rssfeed .= '</rss>';
    echo $rssfeed;

对于 json...

<?php
/* Define db credentials */ 
    $DBHOST = "localhost";
    $DBUSER = "1";
    $DBPASS = "2";
    $DBNAME = "3";
/* connect to the db */
   $conn = new mysqli($DBHOST, $DBUSER, $DBPASS, $DBNAME);
if ($conn->connect_error) { trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR); }
mysqli_set_charset($conn,"utf8");
    $query= "Select * from table ORDER BY updated_at DESC LIMIT 5";
    $result = mysql_query($query) or die ("Could not execute query");
    while ($row = mysql_fetch_array($result)) {
        extract($row);
    }
    header('Content-Type:Application/json');
    echo json_encode($array);
    mysql_free_result($result);
    mysql_close($conn);
 ?>

【问题讨论】:

  • 在您的 json 脚本中,您将 mysqli_*mysql_* 混合在一起。替换 mysql_* 调用。为什么要提取数组而不是将项目添加到$array?在第一个脚本中,您甚至没有获取行。有点乱。

标签: php json xml rss


【解决方案1】:

请试试这个代码:

$jsonResult = [];

while ($row = mysqli_fetch_array($result)) {
    $jsonResult[] = $row;
}

header('Content-Type:Application/json');
echo json_encode($jsonResult);

【讨论】:

  • 为什么要提倡混合使用两个 API?特别是因为其中之一是deprecated,并且在较新版本的 PHP 中一直是 removed
  • 看看@jeroen 在问题中的 cmets 中说了什么!
  • 我正在尝试这个 $query= "Select * from table ORDER BY updated_at DESC LIMIT 5"; $result = mysqli_query($query) or die ("Could not execute query"); $jsonResult = [];而 ($row = mysqli_fetch_array($result)) { $jsonResult[] = $row; } header('Content-Type:Application/json');回声 json_encode($jsonResult); mysql_free_result($result); mysql_close($conn); ?> 我得到一个“无法执行查询”!
  • 还有 mysqli_free_result($result); mysqli_close($conn) 我得到同样的错误
  • 我发现了问题。我使用的是 $result = mysqli_query($query) 而不是 $result = mysqli_query($con, $query)。我忘记了“$con”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2021-10-21
  • 2016-11-23
相关资源
最近更新 更多