mysql查询和内爆

时间:2012-01-15 00:32:46

标签: php mysql arrays facebook 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

3 个答案:

答案 0 :(得分:5)

看看以下内容是否符合您的要求( FIXED ):

$_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要好得多,但同样的信息也适用于此。

答案 1 :(得分: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()

答案 2 :(得分:1)

使用正确的SQL查询:

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

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