Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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中对id进行排序?_Php_Sorting - Fatal编程技术网

如何在php中对id进行排序?

如何在php中对id进行排序?,php,sorting,Php,Sorting,我如何用php对ID进行排序?我已经尝试过这样做,但没有显示出良好的响应 这是我的密码 $sql=“按id顺序从站点选择*描述限制10”; $result=$conn->query($sql); 如果($result->num_rows>0){ //每行的输出数据 而($row=$result->fetch_assoc()){ $site_id=$row[“id”]; $result2=mysql_查询(“从site_id='$site_id''的状态中选择COUNT(mon_id)); 而(

我如何用php对ID进行排序?我已经尝试过这样做,但没有显示出良好的响应 这是我的密码

$sql=“按id顺序从站点选择*描述限制10”;
$result=$conn->query($sql);
如果($result->num_rows>0){
//每行的输出数据
而($row=$result->fetch_assoc()){
$site_id=$row[“id”];
$result2=mysql_查询(“从site_id='$site_id''的状态中选择COUNT(mon_id));
而($row2=mysql\u fetch\u数组($result2))
{  
$mon_id=$row2['COUNT(mon_id)';

echo$mon_id;?>
您的问题是,您查询了两次,并且对第一个查询结果的每一行执行了第二个查询。因此,您排序执行了10次,但每次仅对一行执行

我假设你想要每个站点的状态计数?! 然后您可以使用此查询:

SELECT COUNT(status.mon_id) as cnt, status.site_id 
FROM status, sites 
WHERE status.site_id=sites.id 
GROUP BY sites.id 
ORDER BY sites.id, cnt 
DESC LIMIT 10;
此查询首先按sites.id排序,然后按cnt排序,并将结果限制为10。 因此,您只需要一个查询

插入数据库连接信息

mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT COUNT(status.mon_id) as cnt, status.site_id 
                        FROM status, sites 
                        WHERE status.site_id=sites.id 
                        GROUP BY sites.id 
                        ORDER BY sites.id, cnt DESC 
                        LIMIT 10");  
if($result!=false){
    while($row=mysql_fetch_array($result, MYSQL_ASSOC))  
    {    
        $mon_id = $row['cnt']; 
        echo $mon_id."<br />";        
    }
}else{
    echo "mysql error";
}
mysql\u connect(“本地主机”、“mysql\u用户”、“mysql\u密码”)或
die(“Keine Verbindung möglich:.mysql_error());
mysql_select_db(“mydb”);
$result=mysql\u查询(“选择COUNT(status.mon\u id)作为cnt,status.site\u id
从状态、站点
其中status.site\u id=sites.id
按站点分组。id
按sites.id、cnt DESC排序
限额(10”);
如果($result!=false){
而($row=mysql\u fetch\u array($result,mysql\u ASSOC))
{    
$mon_id=$row['cnt'];
echo$mon_id.“
”; } }否则{ 回显“mysql错误”; }
顺序添加到
计数中。尝试-

$result2 = mysql_query("SELECT COUNT(mon_id) as total FROM status Where site_id='$site_id'");  
while($row2=mysql_fetch_array($result2))  
{  

$mon_id[] = $row2['total']; 
}
将计数存储到数组中,然后对其执行
rsort()

rsort($mon_id);
你可以试试这个

$sql = "SELECT * FROM Sites ORDER BY id DESC LIMIT 10";
$result = $conn->query($sql);

$mon_id = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $result2 = mysql_query('SELECT COUNT(mon_id) FROM status Where site_id='.$row['id']);
        if ($result2->num_rows > 0) {
            while($row2=mysql_fetch_array($result2)) {  
                $mon_id[] = $row2['COUNT(mon_id)'];
            }
        }
    }
    rsort($mon_id);
    foreach ($mon_id as $key => $val) {
        echo "$key = $val\n";
    }
}
我做了一把小提琴:

错误报告(E_ALL);
ini设置(“显示错误”,1);
$sql='select*,将(mon_id)作为sum_id从站点计算为si
内部连接状态为st
在si.id=st.site\u id上
按st.site\u id分组
按和排序_iddesc';
$result=$conn->query($sql);
而($row=$result->fetch_assoc()){
echo$row['id'.-'.$row['sum_id'.]。
; }
按别名排序\u count desc;
其结果与我的结果相同可能有错误。可能您的表名为“Sites”,我键入了“Sites”,可以解决此问题。我已使用Sites更改了Sites,但其相同的意思是空白页面mysql\u fetch\u array()期望参数1是资源,在/home/Fixed中给定的对象。但是都德,你在所有方面都不做任何努力。我已经从你的所有代码更改了站点到站点,并且它是这样工作的。1 1 1 2 1 2 1 2 1 2 1 1 1但我想显示2 1 OK,将“ORDER BY Sites.id,cnt DESC”更改为“ORDER BY cnt DESC”我更改了这个,它显示了相同的结果,这与我在这里发布问题时的问题相同…我想对所有的重用进行排序,如图2 2 2 1 1 1 1 1它显示为图1 1 2 1 2 1 2 3 2 4 1我需要更多帮助。我如何用ID显示站点名称
error_reporting(E_ALL);
ini_set('display_errors', 1);
$sql = 'select *, count(mon_id) as sum_id from Sites as si
        inner join status as st
        on si.id = st.site_id
        group by st.site_id
        order by sum_id desc';

$result = $conn->query($sql);
while($row = $result->fetch_assoc()){
    echo $row['id'] . ' - ' . $row['sum_id'] . '<br/>';
}