2016-08-11 13 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'を使用して、単一のクエリで結果を取得します。 phpから 'procedure'と呼び出しを使う方がいいです。 – Riad

答えて

1

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

今、あなたはその結果、設定した条件ならば、単純なPHPでposition列を比較することにより、$allplayers上で、ループフィルタに繰り返すことができ、これを好きに。

これによりデータベースへのクエリの量が削減され、適切なデータをフィルタリング/取得するためのPHPスクリプトで返信されます。

+0

ありがとう!これは素晴らしい!すでにすべてをして、本当にうまくいく! –

+0

恐ろしい:)それがあなたを助けた場合正解としてそ​​れを受け入れてください。 –

+0

'WHERE team = ... AND IN( 'C'、 'D'、 'GK'、 'LW'、 'RW')の位置は少しはっきりしており、より簡潔です。 – eggyal

関連する問題