我正在创建一个页面,显示球员的详细信息,并通过罚款拉信息。我还有一个连接表,它从另一个表中提取单个记录,以便连接不是问题。
但现在完全停留在如何循环通过已经循环的数据上。
在我的players.php类中,我有一个函数,可以遍历所有需要的信息,并可以在前端很好地显示出来。
function getById($id)
{
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT *, nationalities.nationality FROM players
LEFT JOIN nationalities ON players.nationality = nationalities.id
WHERE players.id = :id";
$st = $conn->prepare($sql);
$st->bindValue(":id", $id, PDO::PARAM_INT);
$st->execute();
$row = $st->fetch();
$conn = null;
if ($row) return new Players($row);
}
function getList($numRows = 1000000, $order = "lastname DESC")
{
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT SQL_CALC_FOUND_ROWS *, lastname AS lastname FROM players
ORDER BY " . ($order) . " LIMIT :numRows";
$st = $conn->prepare( $sql );
$st->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
$st->execute();
$list = array();
while ($row = $st->fetch())
{
$player = new Players($row);
$list[] = $player;
}
//Now get the total number of players that matched the criteria
$sql = "SELECT FOUND_ROWS() AS totalRows";
$totalRows = $conn->query($sql)->fetch();
$conn = null;
return (array("results" => $list, "totalRows" => $totalRows[0]));
}
我的挑战是一个球员可以有多个位置,而不是只有一个?我是如何做到这一点的,我在用sql循环这个过程中也尝试过,但它似乎在任何我处理它的方式中都不起作用。我的table是:
**players**
id, firstname, lastname ...
**positions**
id, position
**player_positions**
player_id, position_id
使用以下数据集进行如下查询:
SELECT positions.position, players.firstname, players.lastname
FROM positions
LEFT JOIN player_positions ON positions.id = player_positions.position_id
LEFT JOIN players ON player_positions.players_id = players.id
WHERE players_id = :id
.
position, firstname, lastname
RWB, Lewis, Robinson
CB, Lewis, Robinson
我的第一个循环是遍历播放器并很好地检索数据,但现在我需要它在这个数据集上的数据循环中循环,并将其存储为位置,然后能够在前端显示它:(
任何关于做这样一件事的帮助或指点都是很好的
1条答案
按热度按时间fzwojiic1#
我会按玩家分组,然后使用双循环来显示玩家的位置。