【问题标题】:eliminating excess code with while loop or other使用 while 循环或其他方法消除多余的代码
【发布时间】:2014-05-21 07:36:10
【问题描述】:

我的网站上有一个项目的选择下拉列表,我希望列表中每个类别的总数旁边有一个数字,显示该类别中的项目总数。当用户从我的下拉列表中选择一个类别时,我希望我的项目目录列表更新。

我在编码时遇到问题。我有一个名为 SiteTypes 和 SiteTypeID 的表。还有一个名为 sites 的表,其中包含数据库中的所有 url,这是我想要显示给我的用户的内容。有不同类别的 url,我的选择菜单在选择时应该显示每个类别的 url。我无法弄清楚如何显示

$sql = "SELECT COUNT(u.url) AS total, u.SiteTypeID, p.SiteType FROM sites AS u LEFT JOIN sitetypes AS p USING (SiteTypeID) WHERE SiteTypeID=3";
$sq2 = mysqli_query($dbc, $sql);

$sq3 = "SELECT COUNT(u.url) AS total, u.SiteTypeID, p.SiteType FROM sites AS u LEFT JOIN sitetypes AS p USING (SiteTypeID) WHERE SiteTypeID=4";
$sq4 = mysqli_query($dbc, $sq3);

$sq5 = "SELECT COUNT(u.url) as total, u.SiteTypeID, p.SiteType FROM sites AS u LEFT JOIN sitetypes AS p USING (SiteTypeID) WHERE SiteTypeID=5";
$sq6 = mysqli_query($dbc, $sq5);


echo $row['url'] $row['SiteType']; 
echo $row2['url'] $row2['SiteType'];
echo $row3['url'] $row3['SiteType'];

我想显示数据库中每个类别的 url 总数。任何想法,将不胜感激。我尝试使用 while 循环,但我无法让它工作。

【问题讨论】:

  • 你真的应该在这里使用准备和执行,而不是使用硬编码的不同参数值三次直接查询。另外,使用不起作用的while循环发布代码并让社区帮助你让它工作!

标签: php mysql sql loops while-loop


【解决方案1】:

我对您想要获得的确切内容有点困惑(您可以发布一些示例数据和示例输出吗?)。但是为什么不将这 3 个查询合并在一起呢?

<?php

$sql = "SELECT COUNT(u.url) AS total, u.SiteTypeID, p.SiteType 
        FROM sites AS u 
        LEFT JOIN sitetypes AS p USING (SiteTypeID) 
        WHERE SiteTypeID IN (3, 4, 5)
        GROUP BY u.SiteTypeID, p.SiteType";

if ($sql2 = mysqli_query($dbc, $sql))
{
    while ($row = mysqli_fetch_assoc($sql2)) 
    {
        echo $row["total"].." - ".$row["SiteTypeID"].." - ".$row["SiteType"]."<br >";
    }
}

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2011-10-20
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多