0

些細なことで困っています、お力添えいただければ幸いです..

ここではすべての電話番号 (テーブル 'leerlingen' の列) をコンマで区切って 1 つにする必要があるため、別のスクリプトに挿入すると、次のようにすべての電話番号が表示されます。

0612345637,061231823,061231723  

コード:

$result = mysql_query("SELECT * FROM leerlingen
WHERE klas_id='$aan_klas'");

while($row = mysql_fetch_array($result))
  {

    $variabele = $row['leerling_nummer'] . ",";

  echo "$variabele";
  }

しかし、echo $variabele whileループの外に出ると、1 つの電話番号しか表示されません。echo $variabele whileループの内側にいると、正しい方法ですべての電話番号が表示されます..何かアイデアはありますか?

編集

私のコードはまったく機能していないので、ここに私が望むものがあります: すべての電話番号をカンマで区切って取得し、変数または配列に入れる必要があります。

編集

みんなありがとう、それはうまくいっている!しかし... すべての mysql_ が mysql_ である場合のみ。それらを mysqli_ に変更すると、何も起こりません...

4

4 に答える 4

3

これが配列の設計目的です

$variabele = array();
while($row = mysql_fetch_array($result))
  {
    if($row['leerling_nummer'] != '')
        $variabele[] = $row['leerling_nummer'];
  }
  echo implode(', ', $variabele);
于 2012-12-24T10:35:16.567 に答える
1

while ループ内ですべての電話番号が表示される理由は、反復ごとに (いわば while ループが再入力されるたびに) の最後の値をエコーし​​ているためです。そのため、すべてが一度に処理されたように見えますが、実際には一度に1 つずつ処理されます。echo "$variabele"; $variabeleechoecho

コードを次のように変更することで、これを簡単に実証できます。

while($row = mysql_fetch_array($result))
{
    $variabele = $row['leerling_nummer'] . ",";
    echo "$variabele" . " | ";
}

さて、結果がそうではないことがわかります(私はあなたが期待したと思います):

0612345637,061231823,061231723, |

... しかし:

0612345637, | 061231823, | 061231723, |

あなたが信じていたことが実際に起こっていたとしたら、結果は実際には次のようになります。

0612345637, | 0612345637, 061231823, | 0612345637, 061231823, 061231723, |

すべての電話番号を 1 つの変数にまとめたい場合は、Mark Ba​​ker が既に提案したように、配列を使用するのが最善の方法です。または$variabele、次のように、新しい電話番号をそれぞれ文字列に追加する必要があります。

// initiate $variabele as an empty string
$variabele = "";
while($row = mysql_fetch_array($result))
{
    // append the new phone number to $variabele (note .= in stead of =)
    $variabele .= $row['leerling_nummer'] . ",";
}
echo $variabele;

これに関する唯一の問題は、最後のコンマを削除する必要があることです。これを行う、またはこれを回避するにはさまざまな方法がありますが、Mark Ba​​ker の解決策は実際にははるかに簡単です。

最後に、列の値を簡単に連結できる便利な MySQL 関数を紹介します。これが関数GROUP_CONCAT()です。ただし、他の列もフェッチしているため、これはおそらく現在のケースでは役に立ちません。ただし、今後の参考のために、カンマで連結したい列が 1 つだけ必要な場合は、次のようにします。

SELECT GROUP_CONCAT( leerling_nummer ) AS leerling_nummers
FROM leerlingen
WHERE klas_id='$aan_klas'
GROUP BY klas_id

データベースにクエリを実行してから$row = mysql_fetch_array($result);すべての数値を実行すると$row['leerling_nummers']、コンマで区切られたGROUP_CONCAT(). つまり、PHP で行をループする必要はもうありません。MySQL はすでにすべてを 1 行にまとめています。

于 2012-12-24T11:09:34.150 に答える
1

連結を使用します。

$result = mysql_query("SELECT * FROM leerlingen WHERE klas_id='$aan_klas'");

$variabele="";
while($row = mysql_fetch_array($result))
  {

    $variabele .= $row['leerling_nummer'] . ",";
  }
echo "VAR: $variabele";

それとは別に、mysql_ 関数は廃止されているため、msqli_ または PDO の使用を検討してください。

于 2012-12-24T10:57:28.847 に答える
0

コメントによると、それは動作していないようmysqliです。ここにmysqli解決策があります:

<?php
$result = mysqli_query($link, "SELECT * FROM leerlingen WHERE klas_id='$aan_klas'");    
$variabele = "";
while($row = mysqli_fetch_array($result))
{
    if($row['leerling_nummer']){
        $variabele .= $row['leerling_nummer'] . ",";
    }
}
echo rtrim($variabele, ',');
?>

は、最初のmysqli_query()パラメータが から戻るリンク リソースであると想定していますmysqli_connect()

<?php
    $mysqlserver   = "localhost";
    $mysqlusername = "root";
    $mysqlpassword = "";
    $link = mysqli_connect(localhost, $mysqlusername, $mysqlpassword) or die ("Error connecting to mysql server: ".mysqli_error());
?>
于 2012-12-24T11:17:12.983 に答える