2012-01-12 30 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和數組