我尝试从一个表中检索一个数组这段代码出了什么问题?
$_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 :(得分: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(…));