2014-12-25 28 views
1

我想获取具有相同IP地址的用户的昵称并注册了个人档案。 现在我明白,我需要做一个if语句,就好像ip_adres count()> 1回显IP地址一样,但我如何使IP的数量等于。获取名称列表(如果其相同)

<?php 
$sql = "SELECT ip_adres, nickname2 FROM users"; 
$alias = $db->prepare($sql); 
$alias->execute(); 

foreach($alias as $a){ 
    $ip_adres = $a['ip_adres']; 
    $nickname = $a['nickname2']; 
    if($ip_adres){ 
     echo "<pre>$nickname has a alias profile! $ip_adres</pre> "; 
    } 
} 
?> 

OUPUT

First has a alias profile! 213.93.99.38 
Second has a alias profile! 213.93.99.38 
Third has a alias profile! 213.93.45.33 
Bla has a alias profile! 213.93.45.33 
ZZZZ has a alias profile! 213.93 

回答

2
$sql = "SELECT ip_adres, nickname2 FROM users"; 
$users = $db->prepare($sql); 
$users->execute(); 

$ips = array(); 
$aliases = array(); 
foreach($users as $user) { 
    if (in_array($user['ip_adres'], $ips)) 
     $aliases[] = $user['ip_adres']; 

    $ips[] = $user['ip_adres']; 
} 
if (empty($aliases)) { 
    echo "Aliases not found"; 
} 
else { 
    foreach($users as $user) { 
     if (in_array($user['ip_adres'], $aliases)) { 
      echo $user['nickname2'] . ' has a alias profile! '. $user['ip_adres'] .'<br/>'; 
     } 
    } 
} 
+0

我如何得到两个显示别名的名字? – Inna

+0

@Inna更新了,检查它 – waki

+0

我得到警告:uasort()期望参数1是数组,对象在' – Inna

2

只要改变你的查询,你将有你的结果肯定

select nickname2, count(ip_adres) as cnt from users group by nickname2 having cnt > 1; 

好运与

+0

是使用MySQL或OP MSSQL? – Mouser

+0

使用MySQL @Mouser – Neo

+0

我收到错误'.ip_adres'不在GROUP BY'' – Inna