我的问题是,我知道有很多不同的方法可以做同样的事情,但我怀疑从查询中构建表格有一个“标准”。
查看2个查询/表组合,哪一个更容易接受? 是否有更标准化的版本从查询构建表? 我想知道这样做的“最佳实践”方式。
我不久前创建了一个查询:
$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>";
答案 0 :(得分:1)
除非你没有选择,否则总是尝试分离来自PHP代码的HTML代码。它看起来很笨拙,将来很难处理。此外,加载页面还需要更多时间。
您的第一个代码更可取。
答案 1 :(得分:0)
如果输出相同且性能相同,则更易读的代码“更好”。
但是,第一个不输出有效的HTML5或XHTML,因为它使用了应该通过CSS完成的弃用属性。除了全局属性,border是表元素的唯一有效属性;虽然边框应该使用CSS完成。第一个WHILE循环应该用FOR循环完成。
所有块中的PHP都使用折旧的mysql_query,因此它们确实不合适。
所有块中的SQL显然容易受到SQL注入的攻击;你应该使用预准备语句,参数化查询,或者至少使用mysql_real_escape_string。