Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用while循环或其他方法消除多余代码_Php_Mysql_Sql_Loops_While Loop - Fatal编程技术网

Php 使用while循环或其他方法消除多余代码

Php 使用while循环或其他方法消除多余代码,php,mysql,sql,loops,while-loop,Php,Mysql,Sql,Loops,While Loop,我在我的网站上有一个选择项目下拉列表,我希望列表中每个类别的总数旁边有一个数字,显示该类别中项目的总数。当用户从我的下拉列表中选择一个类别时,我希望更新我的项目目录列表 我在编码上有困难。我有一个包含SiteTypes和SiteTypeID的表,称为SiteTypes。还有另一个名为sites的表,其中包含数据库中的所有URL,这就是我想向用户显示的内容。URL有不同的类别,我的选择菜单在选择时应该显示每个类别的URL。我很难弄清楚如何显示 $sql = "SELECT COUNT(u.url)

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

我在编码上有困难。我有一个包含SiteTypes和SiteTypeID的表,称为SiteTypes。还有另一个名为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循环,但无法使其工作

我有点搞不清楚你到底想得到什么(你能发布一些样本数据和样本输出吗?)。但是,为什么不将这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 >";
    }
}

?>

您确实应该在这里使用prepare和execute,而不是使用硬编码的不同参数值进行三次相同的直接查询。另外,用while循环发布不起作用的代码,并让社区帮助您使其起作用!