使用url过滤基于值的json结果

时间:2014-12-05 22:15:32

标签: php mysql json filter

我在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

我真的很感激任何想法。

感谢

3 个答案:

答案 0 :(得分:0)

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

尝试使用Google“MySQL SELECT FROM WHERE”,它可以轻松地帮助您

答案 1 :(得分:0)

你可以这样做:

// 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);

答案 2 :(得分:0)

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

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

$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);