你好我试图从我的通知系统的数据库中获取数组中的名称。这样我就有3个条件。在第二和第三我需要数组中的名称,任何人都可以帮我解决代码问题。同样在$ result查询中我无法避免同一用户的结果,即我想约翰两次评论我的状态然后只应该选择一个结果,我使用了不同但没有成功。
所以基本上有两个问题
<?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 :(得分: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))。我认为使用相同的名称可能会导致问题和数组