2012-04-04 83 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