2012-01-15 120 views
1

我尝试从一个表中检索数组这个代码有什么问题?mysql查询和implode

$_fbexclude = mysql_query("SELECT fbempfang FROM fbinvite WHERE fbreturn = '1' "); 
$fbexcludearray= mysql_fetch_array($_fbexclude); 

// Convert the array 
$excludes = implode(',', $fbexcludearray); 

echo $excludes;它只是给了我刚刚如下回应:1000033xxx161,1000033xxx161两次相同fbempfang

+0

你只读取一次行,因此只创建一个元素'$ fbexcludearray [“fbempfang”的数组]'。这可能会导致问题(我想你想获得所有行的数组) – Vultour 2012-01-15 00:36:07

+0

是它的正确,我想获得一个数组与所有行 – 2012-01-15 00:37:23

回答

5

看看下面给你你想要的(固定)什么:

$_fbexclude = mysql_query("SELECT fbempfang FROM fbinvite WHERE fbreturn = '1'"); 
$fbexcludearray = array(); 
while ($row = mysql_fetch_assoc($_fbexclude)) { 
    $fbexcludearray[] = $row['fbempfang']; 
} 

// Convert the array 
$excludes = implode(',', $fbexcludearray); 

mysql_fetch_array()和它的兄弟姐妹(_assoc,_row)一次只能检索一行。这意味着你的原始代码只会给你第一个返回的行 - 为了解决这个问题,我们使用你在上面看到的循环。

您看到相同数据两次的原因是因为mysql_fetch_array()返回混合索引和关联数组,其中包含所有数据两次。出于这个原因,使用mysql_fetch_assoc()mysql_fetch_row()要好得多,因为你很少需要这两种格式。

实际上,使用mysqli要好得多,但同样的信息也适用于此。

+0

感谢您的伟大和有益的答案,这是非常快的 – 2012-01-15 00:54:52

+0

Fantástico,justamente o que estava procurando e precisando,esse post resolveu a minha vida,obrigado @DaveRandom。 – adventistapr 2016-03-09 19:16:47

1

试试这个关于大小:

$implode_arr = array(); 
$_fbexclude = mysql_query("SELECT fbempfang 
          FROM fbinvite 
          WHERE fbreturn = '1'"); 
while($row = mysql_fetch_array($_fbexclude)) { 
    $implode_arr[] = $row['fbempfang']; 
} 

// Convert the array 
$excludes = implode(',', $implode_arr); 

你需要循环的mysql_fetch_*功能,因为他们一次只返回结果行的一个。欲了解更多信息和示例,请参阅manual page for mysql_fetch_assoc()

+0

感谢您的回复,这非常快速 – 2012-01-15 00:54:43

1

使用权SQL查询:

SELECT GROUP_CONCAT(`fbempfang`) as imploded from `fbinvite` WHERE fbreturn = '1' 

它返回的字符串作为PHP implode(',', array(…));

+0

谢谢!我想通过这个技巧我需要什么...... – 2016-08-15 21:17:51