2012-01-15 115 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