2012-04-04 104 views
1

這就是我要做的:搜索在MySQL表數組

$allwinnersarra = array(26809,26805,24279,4839,20939,17678,4999,17745,1); 

$results_query = mysql_query("SELECT username FROM table_users WHERE userid IN('".join("','", $allwinnersarra)."')"); 

while ($row = mysql_fetch_array($results_query)) { 
     $usernamesFound.= $row['username']; 
} 

die($usernamesFound); 

有ID號的數組,我想他們的用戶名,在我自己的想法我的做法是正確的,但結果是不。

輸出僅僅是第一用戶名和不顯示其他用戶名

+0

請張貼的SQL查詢。 – 2012-04-04 08:48:32

+1

如果用戶標識符是數字,請不要將引號放在IN部分的值中,否則他們會被評估爲字符串,並且很可能得到錯誤的結果 - 不確定它是否解決了您的問題 – 2012-04-04 08:51:44

+1

@Basti我將字符串作爲整數當使用IN之前,所以這就是我從哪裏來...可能是錯誤的,也許它在此期間「固定」了 – 2012-04-04 08:53:39

回答

3

試試這個:

$allwinnersarra = array(26809,26805,24279,4839,20939,17678,4999,17745,1); 
$allwinnersarra = implode(',', $allwinnersarra); 

$sql = "SELECT username FROM table_users WHERE userid IN 
      (" . mysql_real_escape_string($allwinnersarra) . ");"; 

希望它可以幫助...

+0

你什麼都沒做,但別名加入這是我的回答,好工作夥伴的建議 – peipst9lker 2012-04-04 09:03:44

+0

@peipst 9lker - '(「。 mysql_real_escape_string($ allwinnersarra)。 「)注意在開始/結束大括號之前缺少單引號(就像你的例子中的原因)(無論如何你只得到一個結果)...無論如何,祝你好運 – 2012-04-04 09:07:16

+0

似乎我錯了,遺憾的是downvote。 – Basti 2012-04-04 09:18:29

2
  1. 爲$ usernamesFound甚至一個字符串?請在循環之上聲明它。
  2. 添加一個空格的變量名和之間= - 運營商
  3. 我建議你把用戶名在數組

    $用戶=陣列()。 ($ row = mysql_fetch_array($ results_query)){$ users [] = $ row ['username'];}; }

  4. 也請使用implode而不是加入。
+0

$ usernamesFound如果你看到我使用usernamesFound。=所以它肯定是一個字符串。 – 2012-04-04 08:57:09

+0

$ usernamesFound不會定義會在最壞的情況下觸發通知。空白不重要。字符串連接與數組無關緊要。 'Join'是'implode'的別名,所以它們是相同的。再次讚揚無用的答案。 = _ =「 – Basti 2012-04-04 08:57:47

+0

@MacTaylor如果你將它聲明爲一個數組,然後使用。=它會下雨警告和錯誤(while循環) – peipst9lker 2012-04-04 08:58:43