2012-01-15 17 views
1

1つのテーブルから配列を取得しようとしていますこのコードで何が問題になっていますか? echo $excludes;からmysqlクエリと暗黙的に

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

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

それだけで私にちょうど次の応答できます:1000033xxx161,1000033xxx161を二度同じfbempfang

+0

としてリターン文字列です] '。これは問題を引き起こす可能性があります(私はすべての行の配列を取得すると思います) – Vultour

+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)は、一度に1行だけを取得します。これは、元のコードが最初に返された行だけを与えることを意味します。これを回避するには、上記のループを使用します。

同じデータを2回表示するのは、mysql_fetch_array()がすべてのデータを2回以上含む混合インデックス付き連想配列を返すためです。このため、ほとんど両方の形式が必要ないので、mysql_fetch_assoc()またはmysql_fetch_row()を使用するほうがはるかに優れています。

実際、mysqliを使用する方がはるかに優れていますが、同じ情報も同様に適用されます。

+0

偉大で有用な答えのおかげで、これは非常に高速でした –

+0

Fantástico、justamente @DaveRandomを使って、問題を解決してください。 – adventistapr

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

偉大で有益な答えをありがとう、これは非常に速かった –

1

使用権SQLクエリ:

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

それ故、それが唯一の要素 `$ fbexcludearray [「fbempfang」の配列を作成し、あなたが一度だけの行をフェッチしているPHP implode(',', array(…));

+0

ありがとう!私はこのヒントから必要なものを見つけました... –

関連する問題