【问题标题】:filter json results based on value with url根据带有 url 的值过滤 json 结果
【发布时间】:2015-02-04 04:38:23
【问题描述】:

我在 php 文件中运行 Mysql 查询并将其解析为 json,如下所示:

$json_response = array();

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $row_array['artist'] = $row['artist'];
    $row_array['song'] = $row['song'];

    //push the values in the array
    array_push($json_response,$row_array);
}

echo json_encode($json_response);

有成千上万的条目;有什么方法可以根据值过滤 JSON 结果? 类似于:mylink.php/artist1 或 mylink.php?artist=1

我真的很感激任何想法。

谢谢

【问题讨论】:

  • 您的 MySQL 查询(SELECT 语句)是什么,这是针对网站的吗?用户如何与此代码交互?
  • 嗯,我这样做的原因是因为有数百位艺术家每次都会被访问以返回他们的歌曲.. 是的,这是一个网站,但稍后会被访问在 ios 应用程序中检索必要的信息。

标签: php mysql json filter


【解决方案1】:

你应该使用 SQL 过滤结果,而不是 PHP...

尝试谷歌“MySQL SELECT FROM WHERE”,它会很容易帮助你

【讨论】:

    【解决方案2】:

    你可以这样做:

    // Get artist info
    $artist_id = isset($_GET['artist']) ? intval($_GET['artist']) : 0;
    $sql = "SELECT * FROM artist";
    if($artist_id)
        $sql .= " WHERE artist=$artist_id";
    mysql_query($sql);
    

    【讨论】:

      【解决方案3】:

      首先,您使用的 MySQL API 已被弃用,最终将被删除。建议您切换到MySQLIPDO 进行任何新的开发。

      在 PHP 中使用 $_GET superglobal 获取 URL 参数。

      $artist = $_GET['artist'];
      

      然后您必须将该参数绑定到您的 SELECT 语句。这就是为什么最好切换到 MySQLI 或 PDO 的原因,因为 PHP 中的 mysql_* 函数不支持准备好的语句和参数化查询。阅读更多How can I prevent SQL injection in PHP?

      也就是说,在这里使用 mysql_* 是一种将艺术家传递给您的查询的方法:

      // Query
      $query = sprintf("SELECT * FROM mytable WHERE artist='%s'",
                  mysql_real_escape_string($artist));
      
      $result = mysql_query($query);
      
      
      $json_response = array();
      
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          $row_array['artist'] = $row['artist'];
          $row_array['song'] = $row['song'];
      
          //push the values in the array
          array_push($json_response,$row_array);
      }
      
      echo json_encode($json_response);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        • 2021-03-22
        • 1970-01-01
        • 1970-01-01
        • 2019-10-26
        • 2016-09-05
        • 1970-01-01
        相关资源
        最近更新 更多