0

私は何か奇妙なことを経験していますが、なぜそれが起こっているのかわかりません。mysql テーブルの列からデータを取得するクエリを実行しています。ストレートを実行するとprintf()、期待どおりにデータが出力されます。ただし、 を実行する$variable = printf()と、文字列に追加の値が追加されます。

次のように表示されます:

$query  = "SELECT column FROM table WHERE year in (2012)";
if ($result = mysqli_query($connect, $query)) {
    while ($row = mysqli_fetch_assoc($result)) {
        printf ("%s,", $row["column"]);
    }
}

しかし、結果を次のように変数に入れようとすると:

$data = printf ("%s,", $row["column"]);

22611,21435,23327,22876,22986,23692,21581,21832,22337,24313,22174,24368,6 の出力が得られます。

なぜこの付加価値を追加するのでしょうか? 結果を変数に間違って追加していませんか? 参考までに、これはコードのスニペットにすぎません。エラー処理が実装されています。

4

3 に答える 3

4

sprintf()代わりに使用します ( とまったく同じように機能します) printf()。これはそれを「沈黙」させ、戻り値を返します。

于 2013-02-06T18:26:34.120 に答える
2

好奇心から、なぜあなたsprintf()はまったく使っているのですか?

変数に直接、または文字列連結を使用して値を割り当てることができます。

$data = $row["column"];
$data = $row["column"] . ',';

PHPの文字列についてもっと読む。

この特定のケースでは、をお勧めしimplode()ます。

$data = array();
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row["column"];
}
echo implode(',', $data);
于 2013-02-06T18:33:13.300 に答える
2

printf()データを出力し、その長さを返します。そこから余分な価値が生まれるのです。sprintf()値を返すだけが必要です。

于 2013-02-06T18:28:50.133 に答える