我的问题是,我知道有许多不同的方法来做同样的事情,但我怀疑有一个“标准”来构建表的查询。
看看两个查询/表组合,哪一个更可以接受?是否有从查询构建表的更加标准化的版本?我想知道这样做的“最佳做法”。
不久前,我创建了一个查询:
$query1="select concat(sp.first_name,' ',sp.last_name)as 'Player Name',st.name as 'Team', spt_league_id as 'League', ss.Season_name
from stats_player sp
inner join stats_player_team stp,stats_team st, stats_season ss
where stp.player_num = sp.player_num and st.team_num=stp.team_id and ss.season_index=stp.season_id and stp.season_id=$this_season
order by st.League_id,st.Team_num,sp.player_num";
$result=mysql_query($query1);
$num=mysql_numrows($result);
mysql_close();然后用这个做桌子:
?>
<table border="1" cellspacing="2" cellpadding="2">
<tr>
<td><font face="Arial, Helvetica, sans-serif"><b>Player</b></font></td>
<td><font face="Arial, Helvetica, sans-serif"><b>Team</b></font></td>
<td><font face="Arial, Helvetica, sans-serif"><b>League</b></font></td>
</tr>
<?php
$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"Player Name");
$f2=mysql_result($result,$i,"Team");
$f3=mysql_result($result,$i,"League");
?>
<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
</tr>
<?php
$i++;
}
?>然后,我遇到了其他人编写的代码:
$query= "select first_name,last_name,email_address,name,captain_id,paid,p.player_num,league_id from stats_player p left join stats_player_team t on p.player_num=t.player_num left join stats_team s on t.team_id=s.team_num where season_id=$this_season and name is not NULL order by league_id,s.captain_id,name,first_name";
$results=mysql_query($query);
print "<table border=1>";
print "<tr><td>First Name</td><td>Last Name</td><td>captain</td><td>Email?</td><td>League</td><td>Team</td><td>pay</td><td>wks played</td></tr>";
while ($row=mysql_fetch_assoc($results)){
if($row['email_address'] != NULL ){
$email='y';
}
else {
$email='n';
}
if($row[captain_id]==$row[player_num]){ $iscapt="Captain"; }
else{$iscapt="";}
$paid=$row[paid];
if($paid){$playpaid="<td bgcolor=#99ff33>paid</td>";}
else {$playpaid="<td bgcolor=#ff6633>not paid</td>";}
printf ("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></td><td>%s</td>%s \n</tr>",$row['first_name'],$row['last_name'],$iscapt,$email,$row['league_id'],$row['name'],$playpaid);
}
print "</table>";发布于 2014-02-20 06:53:20
总是尝试将代码与代码分开,除非您没有choice.It,看起来很笨拙,而且将来在处理事情上会有困难。此外,在加载页面时也需要更多的时间。
您的第一段代码更可取。
发布于 2014-02-20 06:39:47
如果输出相同,性能相同,那么更易读的代码“更好”。
但是,第一个不输出有效的HTML5或XHTML,因为它使用了应该通过CSS完成的不推荐的属性。除了全局属性之外,边框是表元素的唯一有效属性;不过,即使是边框也应该使用CSS。第一个循环中的WHILE应该使用FOR循环来完成。
所有块中的PHP都使用折旧后的mysql_query,因此它们确实不合适。
所有块中的SQL显然容易受到SQL注入的影响;您应该使用准备好的语句、参数化查询或至少是一个mysql_real_escape_string。
https://stackoverflow.com/questions/21899076
复制相似问题