MySQL PHP printf into $ variable添加额外的值

时间:2013-02-06 18:25:30

标签: php mysql

我遇到了一些奇怪的事情,我无法弄清楚它为什么会发生。我正在运行一个查询来从mysql表中的列中提取数据,当我执行直接printf()时,数据按预期出现。但是,当我执行$variable = printf()时,我在字符串中获得了一个额外的值。

以下内容如下: 22611,21435,23327,22876,22986,23692,21581,21832,22337,24313,22174,24368,

$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

为什么要添加这个额外值?我是否错误地将结果添加到变量中?仅供参考,这只是代码中的一个片段,我有错误处理。

3 个答案:

答案 0 :(得分:3)

改为使用sprintf()(它的工作原理与printf()完全相同)。这会“沉默”并给出回报值。

答案 1 :(得分:2)

printf()输出数据并返回其长度。这就是额外价值的来源。您希望sprintf()只返回值。

答案 2 :(得分:2)

出于好奇,你为什么要使用sprintf()

您可以直接为变量赋值或使用字符串连接。

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

详细了解Strings in PHP

在这种特定情况下,我建议implode()

$data = array();
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row["column"];
}
echo implode(',', $data);