1

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

4

3 に答える 3

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が、同じ情報がそれにも当てはまります。

于 2012-01-15T00:41:43.550 に答える
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_*一度に 1 つの結果行しか返さないため、関数をループする必要があります。詳細と例については、 のマニュアル ページをmysql_fetch_assoc()参照してください。

于 2012-01-15T00:43:25.107 に答える