我遇到了一些奇怪的事情,我无法弄清楚它为什么会发生。我正在运行一个查询来从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
为什么要添加这个额外值?我是否错误地将结果添加到变量中?仅供参考,这只是代码中的一个片段,我有错误处理。
答案 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);