2016-08-11 143 views
0

我是這個東西的新手,我只是在學習。我爲NHL錦標賽做了一個頁面,現在我想縮短我的php代碼,但實際上我不知道如何。從數據庫中選擇Mysql

我的問題是從數據庫中進行選擇。它變得非常複雜,但也許有辦法如何縮短它?

<?php 
    if(IS_USER){ 
$team = mysql::fetch(mysql::query(1 , "SELECT * FROM league_nhl_standings WHERE league_id = '".get_seg('ceturtais')."' AND player_id = '" . get_cookie('user_id') . "'")); 
$center = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'C'")); 
$defenseman = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'D'")); 
$goalies = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'GK'")); 
$leftw = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'LW'")); 
$rightw = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'RW'")); 
+0

使用'join'並在單個查詢中得到結果。更好地使用'procedure'和php調用。 – Riad

回答

1

您可以在一個查詢中合併以下查詢。

$center = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'C'")); 
$defenseman = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'D'")); 
$goalies = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'GK'")); 
$leftw = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'LW'")); 
$rightw = mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position = 'RW'")); 

喜歡這個,

$allplayers=mysql::rows(mysql::query(1,"SELECT * FROM player_list WHERE team = '$team[team_small]' AND position IN ('C', 'D', 'GK', 'LW', 'RW')")); 

現在,您可以通過迭代列position用簡單的PHP如果條件相比較,在$allplayers和環路濾波器的結果集。

這將減少您對數據庫的查詢量並回復PHP腳本以過濾/獲取適當的數據。

+0

謝謝!這很棒!已經做了所有的工作,真的很好! –

+0

真棒:)請接受它作爲正確的答案,如果它幫助你。 –

+0

'WHERE team = ... AND position in('C','D','GK','LW','RW')'會更清晰一點,更簡潔。 – eggyal