【问题标题】:Correct results showing, but I want to limit them to identical values显示正确的结果,但我想将它们限制为相同的值
【发布时间】:2012-05-26 00:26:30
【问题描述】:

我有这个查询,它在动态表中显示我的“页面”,但是它显示所有页面,我想限制“页面”仅在其“campaignid”列与当前“campaign”列匹配时显示",有没有人有什么想法。

这是显示数据的查询:

  $counter=1;               $userID=PageDB::getInstance()->get_user_id_by_name($_SESSION['user']);              $result=PageDB::getInstance()->get_pages_by_campaign_id($campaignID);
            $i=0;
                while ($row = mysqli_fetch_array($result)):
                 $style = "";
                    if($i%2==0)
    {
        $style = ' style="background-color: #EFEFEF"';
    }
    echo "<tr".$style.">";
                echo "<td>" . htmlentities($row['pid']) . "</td>";
                echo "<td>". htmlentities($row['id']) . "</td>";
                ?>
                <td>
                <form style="display:none;"></form>
                    <form name="editPage" action="editPage.php" method="GET">
                        <input type="hidden" name="pageID" value="<?php echo $pageID = $row['pid']; ?>" />
                        <input type="submit" name="editPage"  value="<?php echo "Page "  . $counter; ?>" style="padding-top:4px; padding-bottom:6px;background:none;border:none; cursor:pointer"/>
                    </form> 
    </td>           
                <?php
                $pageID = $row['pid'];  
                $counter++;
                $i++;

                echo "</tr>\n";
            endwhile;
            mysqli_free_result($result);              
?>   

这就是我查询数据库的方式。

public function get_pages_by_campaign_id($campaignID) {
    $campaignID = $this->real_escape_string($campaignID);
    return $this->query("SELECT pid,campaignid,id,campaign_name FROM pages,campaigns WHERE pages.campaignid = campaigns.id ORDER BY campaigns.id LIMIT 1,10");
    }

正如我所说,它返回的是正确的数据,但我只想在以下位置显示数据: pages.campaignid =campaign.id [1] 或 pages.campaignid =campaign.id [r] 等等...

【问题讨论】:

  • Campaigns 表是否有一个列来指定哪个是当前的营销活动,或者甚至是一个用于将以前的营销活动标记为完成的列?我要做的是,在添加新广告系列时,您将更新该用户/页面的先前广告系列以将其设置为已过期,这将允许您使用 where campaigns.expired = 0 仅显示当前广告系列。
  • 我想我发现了我的问题,指向此页面/表单的页面没有解析整个广告系列 ID,因此表单无法引用广告系列 ID。有人对此有什么建议吗?
  • 查看您的功能get_pages_by_campaign_id 您没有使用where 来选择广告系列。试试$this-&gt;query("SELECT pid,campaignid,id,campaign_name FROM pages,campaigns WHERE pages.campaignid = campaigns.id where pages.campaignID = $campaignID ORDER BY campaigns.id LIMIT 1,10")

标签: php mysql collation


【解决方案1】:

您需要在 while 循环中添加额外的 if-else 条件。这个if-else 语句将比较当前行是否等于campaigns.id

【讨论】:

  • 好的,我听到了,但是这个查询已经超出了我的专业领域......你介意举个例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多