【问题标题】:Creating a Variable From Two Others从其他两个变量创建一个变量
【发布时间】:2011-02-26 00:53:33
【问题描述】:

在下面的 HTML 表格中,我想添加第三列,它等于 $row["countSubmissions"] 乘以 10 加上 $row["countComments"]。我怎么能这样做?

提前致谢,

约翰

$sqlStr = "SELECT 
    l.loginid, 
    l.username, 
    COALESCE(s.total, 0) AS countSubmissions, 
    COALESCE(c.total, 0) AS countComments
FROM login l    
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM submission 
    GROUP BY loginid
) s ON l.loginid = s.loginid
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM comment 
    GROUP BY loginid
) c ON l.loginid = c.loginid
GROUP BY l.loginid
ORDER BY countSubmissions DESC 
LIMIT 10";

  $result = mysql_query($sqlStr);

$arr = array(); 
echo "<table class=\"samplesrec1edit\">";
while ($row = mysql_fetch_array($result)) { 
    echo '<tr>';
    echo '<td class="sitename1edit1"><a href="http://www...com/.../members/index.php?profile='.$row["username"].'">'.stripslashes($row["username"]).'</a></td>';
    echo '<td class="sitename1edit2">'.stripslashes($row["countSubmissions"]).'</td>';
    echo '<td class="sitename1edit2">'.stripslashes($row["countComments"]).'</td>';
    echo '</tr>';
    }
echo "</table>";

【问题讨论】:

  • stripslashes() 不应在这里使用

标签: php


【解决方案1】:

您可以修改 SQL 以包含额外的列:

SELECT 
    l.loginid, 
    l.username, 
    COALESCE(s.total, 0) AS countSubmissions, 
    COALESCE(c.total, 0) AS countComments,
    COALESCE(s.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore
...

或在 PHP 中进行计算:

echo '<td class="sitename1edit2">'. $row['countSubmissions'] . '</td>';
echo '<td class="sitename1edit2">'. $row['countComments'] . '</td>';
echo '<td class="sitename1edit2">'. ($row['countSubmissions'] * 10 + row['countComments']) . '</td>';

我认为没有必要调用stripslashes,所以我删除了它们。

【讨论】:

    【解决方案2】:

    之后

    echo '<td class="sitename1edit2">'.stripslashes($row["countComments"]).'</td>';
    

    添加以下内容

    echo '<td>' . ($row["countSubmissions"] * 10 + $row["countComments"]) . '</td>';
    

    【讨论】: