我试图显示基于Where Statement的所有数据,但它显示表中的所有数据。以下是我的account.php文件代码

$sql = "SELECT Country,COUNT(*) as count, ROUND(100.0*COUNT(ip)/(SELECT     count(ip)  FROM ip_ptc),2) as percentage  FROM ip_ptc GROUP BY Country


UNION ALL

SELECT 'SUM' ip, COUNT(ip) as sum,'100%'
FROM ip_ptc  WHERE ad_id=" . $db->real_escape_string($input->gc['aid']);

$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
$data[] = $row; # $data is the array created for use in the Smarty template.
}
$smarty->assign('data', $data);
//showing data for addstate

$smarty->assign("file_name", "ptcmaxclicks.tpl");
$smarty->display("account.tpl");
$db->close();
exit();


检查URL它相应地传递了gc['aid'],但是不按照gc['aid']显示表中的所有数据,在我的account.tpl文件中,我有以下代码

{foreach from=$data item=item key=key}
<tr>
   <td>{$item.Country}</td> <td>{$item.count}</td> <td>{$item.percentage}</td>
<tr>
{/foreach}


我在做什么错?谢谢

最佳答案

您的问题是WHERE子句仅适用于第二个SELECT。您也需要将其也添加到第一个SELECT中,即:

$sql = "SELECT Country, COUNT(*) as count,
            ROUND(100.0*COUNT(ip)/(SELECT count(ip)  FROM ip_ptc),2) as percentage
        FROM ip_ptc
        WHERE ad_id=" . $db->real_escape_string($input->gc['aid']) .
       " GROUP BY Country
        UNION ALL
        SELECT 'SUM' ip, COUNT(ip) as sum,'100%'
        FROM ip_ptc
        WHERE ad_id=" . $db->real_escape_string($input->gc['aid']);

09-25 18:30
查看更多