2012-01-12 31 views
0

你好我米试图从数据库中我通知系统得到数组名。这样我已经采取了3个条件。并在第二和第三我需要数组中的名称,任何人都可以帮助我与代码。也是在$结果查询我不是能够避免同一用户的结果即我想约翰对我的身份评论两次,然后只有一个结果,应选择,我用不同的针对,但没有成功。在阵列越来越名字通知系统

所以基本上有两种porblems

  1. 使用阵列
  2. 避免相同的用户名的结果在用于阵列中选择的用户名从数据库中获取一个以上的名称。

谁能帮助,它是一个大的模块卡非常糟糕。感谢

<?php 
include_once("includes/connection.php"); 
$result = mysql_query("SELECT distinct * from notification inner join users_profile on notification.owner_user_id=users_profile.uid where notification.user_id=3 and notification.user_id!=notification.owner_user_id order by notification.time_stamp Desc"); 
while ($row=mysql_fetch_array($result)) { 
    $nfname[]=$row["fname"]; 
    $npicid[]=$row["profile_pic"]; 
    $sql2 =mysql_query("SELECT COUNT(type_id) FROM notification where type_id='wall_comments' and user_id='3' and is_seen='0'"); 
    while($row2=mysql_fetch_array($sql2)) { 
     $req_pending=$row2['COUNT(type_id)']; 
     $req_pending1=$row2['COUNT(type_id)']-3; 
     if ($req_pending==1) { 
      $result="$fname shared view on your Status Update"; 
     } 
     elseif ($req_pending==3) { 
      $result="$nfname shared views on your Status Update"; 
     } 
     else { 
      $result="$nfname and $req_pending1 shared their views on your Status Update"; 
     } 
    } 
} 
?> 
+0

如果您的表中有日期时间或时间戳字段,则distinct会将所有多个用户重复使用两次,因为您正在选择'*',并且每个记录的日期时间都不相同。另外,你还没有真正解释你在获取数组中的名字时面临的问题。看起来你已经用'$ nfname [] = $ row [“fname”];' – sadmicrowave 2012-01-12 15:38:06

+0

已经实现了这个答案,谢谢你的回复,第一是任何方式,我只能从两个记录中的两个记录中获得一个名字同名第二我得到警告:mysql_fetch_array()期望参数1是资源,字符串给出在C:\ wamp \ www \ mihubs \ test.php上使用数组时的第5行错误 – 2012-01-12 15:46:28

回答

1

我会回复您的问题依次是:

问题1:“是THR任何方式,我只能得到一个名字出来的两个两条记录同名”

是。如果数据表中有多个具有相同名称的记录,则可以使用distinct sql命令仅选择其中一个记录。但是,在选择*时,您的记录中的其他字段具有唯一性,因此它们也将被选中。这里有一个例子:

数据在我的表:

用户名|创建#< --field名

JOHNDOE | 2012-01-12 10点03分42秒

JOHNDOE | 2012-04-12 14点24分55秒

方法1

"SELECT DISTINCT * FROM MYTABLE" 

将导致这两个记录被检索自创建日期是为每个记录是唯一的。

方法2#< --correct方法

"SELECT DISTINCT Username FROM MYTABLE" 

将导致只有1 “JOHNDOE” 的实例被返回。

问题2:我得到警告:mysql_fetch_array()预计参数1是资源,在串C中给出:\瓦帕\ WWW \ mihubs \ test.php的第5行错误使用阵列

这很可能是由于您的mysql_query()导致失败而导致的。查询后添加or die("query failed:" . mysql_error())像这样:

$myresults = mysql_query("SELECT DISTINCT Username FROM MYTABLE") 
       or die("query failed:" . mysql_error()); 

这将确保已遇到错误时,你的代码不会继续。相反,它会将错误扼杀到屏幕上,您可以看到问题出在哪里。

或者,如果你不想错误打印到屏幕上,并停止你的网站的功能,你可以删除or die()和包装您的程序while statement(或任何你有你的后选择使用您的结果if($myresults){,这也如果mysql_query()遇到错误,请确保该块不会被执行。

+0

你好,谢谢帮助球员。我解决了我的问题@sadmircowave感谢您建议或死亡(“查询失败:”。mysql_error()); 。我做的事情是我改变了 $结果到$ sql1和while($ row = mysql_fetch_array($ result))到($ row = mysql_fetch_array($ sql1))。我认为采用相同的名称可能会导致问题,并且数组部分也在运行。 – 2012-01-12 16:26:29

0

您好,感谢您帮助我们解决了我的问题@sadmircowave感谢您的建议或死亡(“query failed:”。mysql_error());我做的事情是我改变了 $结果到$ sql1和while($ row = mysql_fetch_array($ result))到($ row = mysql_fetch_array($ sql1))我想同名可能导致了问题m和数组