2014-12-05 42 views
1

我運行在一個PHP文件中的MySQL查詢和分析它作爲JSON如下:過濾JSON的結果與URL

$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

什麼是你的MySQL查詢(SELECT語句),而這是一個網站?用戶如何與此代碼交互? – JasonCG 2014-12-05 22:31:51

+0

那麼,我這樣做的原因是因爲有數百名藝術家每次訪問時都會返回他們的歌曲。是的,它是爲一個網站,但後來它將訪問一個iOS應用程序retreive必要的信息。 – airflow 2014-12-06 03:59:37

回答

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); 
+0

完美。謝謝 – airflow 2014-12-07 23:01:11

0

那麼你應該用你的SQL,而不是使用PHP的結果過濾...

嘗試谷歌「的MySQL SELECT從那裏」,否則很容易幫助您

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