我在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
我真的很感激任何想法。
感谢
答案 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已弃用,最终将被删除。对于任何新开发,建议您切换到MySQLI或PDO。
在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);