获取通知系统的数组名称

时间:2012-01-12 15:15:06

标签: php mysql arrays notifications

你好我试图从我的通知系统的数据库中获取数组中的名称。这样我就有3个条件。在第二和第三我需要数组中的名称,任何人都可以帮我解决代码问题。同样在$ result查询中我无法避免同一用户的结果,即我想约翰两次评论我的状态然后只应该选择一个结果,我使用了不同但没有成功。

所以基本上有两个问题

  1. 使用数组
  2. 从数据库中获取多个名称
  3. 避免使用相同的用户名导致选择数组的用户名。
  4. 任何人都可以帮忙,它的一个大模块非常糟糕。感谢

    <?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";
            }
        }
    }
    ?>
    

2 个答案:

答案 0 :(得分:1)

我会按顺序回答你的问题:

问题1:“无论如何我只能从同名的两个记录中的两个中获得一个名称”

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

我桌上的数据:

用户名|创建#&lt; - 字段名称

JohnDoe | 2012-01-12 10:03:42

JohnDoe | 2012-04-12 14:24:55

方法1

"SELECT DISTINCT * FROM MYTABLE" 

将导致检索两个记录,因为创建的日期对于每条记录都是唯一的。

方法2 #&lt; - 正确方法

"SELECT DISTINCT Username FROM MYTABLE" 

将导致仅返回1个“JohnDoe”实例。

问题2:我收到警告:mysql_fetch_array()期望参数1为资源,使用数组时在第5行C:\ wamp \ www \ mihubs \ test.php中给出的字符串错误

这很可能是由于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()遇到错误时不会执行该块。

答案 1 :(得分:0)

你好,谢谢你的帮助。我解决了我的问题@sadmircowave感谢建议或死(“查询失败:”。mysql_error()); 。而我所做的就是改变了  $结果为$ sql1而while($ row = mysql_fetch_array($ result))为($ row = mysql_fetch_array($ sql1))。我认为使用相同的名称可能会导致问题和数组