1

我尝试从一个表中检索数组 这段代码有什么问题?

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

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

From echo $excludes;It 只给我以下回复:1000033xxx161,1000033xxx161两次相同的 fbempfang

4

3 回答 3

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()出于这个原因,使用or会更好mysql_fetch_row(),因为您很少需要两种格式。

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

于 2012-01-15T00:41:43.550 回答
3

使用正确的 SQL 查询:

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

它以 PHP 形式返回字符串implode(',', array(…));

于 2014-06-03T08:23:54.673 回答
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_*函数,因为它们一次只返回一个结果行。有关更多信息和示例,请参阅mysql_fetch_assoc().

于 2012-01-15T00:43:25.107 回答