从fetch(PDO :: FETCH_ASSOC)创建一个字符串

时间:2015-10-09 22:43:57

标签: php string pdo

我正在尝试构建一个由sql结果构成的字符串,我不知道当db中的数据大于1时如何实现这一点。

当数据库的结果为1时,我能够做到这一点。

for i = 1:length(MM(:,8)) %this should be size(MM,1)
    ind1 = i;
    lat1 = lat(ind1);
    lon1 = lon(ind1);

    ind2 = d;
    lat2 = lat(ind2);
    lon2 = lon(ind2);
    w = MM(d,8);
    t = MM(i,8)+5+1

    dis = distance(lat1, lon1, lat2, lon2);

    if dis<=1
        contact = [ind1, ind2, t, w];
    end
end

但是当我需要循环fetch_assoc时,我无法为变量赋值或直接构建字符串。

$result = $stmt_grade->fetch(PDO::FETCH_ASSOC);  
    $str ="[{$result['score_access']}, {$result['score_training']},
{$result['score_expectation']}, {$result['score_total']} ]";

我到处寻找并没有找到任何解决方案或任何类似的方法来寻找灵感。我希望有一个人可以帮助我。提前谢谢!

3 个答案:

答案 0 :(得分:0)

最明显的方法是循环遍历while循环中的所有响应,并使用.=运算符不断追加到字符串。您可以知道何时用完记录,因为$result将为假。

我用换行符分隔每条记录。看起来你也想计算结果,所以我也补充说。

$str = ""; // start with an empty string
$count = 0;
while ( ($result = $stmt_grade->fetch(PDO::FETCH_ASSOC)) !== false ) {
    // increment the record count
    $count++;
    // add a new line to the output string
    $str .= "[{$result['score_access']}, {$result['score_training']},{$result['score_expectation']}, {$result['score_total']} ]\n";
}

应该这样做。

答案 1 :(得分:0)

您只需要正确命名字符串。

然后使用正确的方法创建 JSON 字符串。其中包括两部分:

  1. 创建所需结构的数组。或者至少在这里提供一个结构,让我们为您提供代码。
  2. 使用json_encode()。
  3. 假设您需要像这样的嵌套数组

    [[1,2,3],[1,2,3],[1,2,3]]
    

    代码将是

    $result = $stmt_grade->fetchAll(PDO::FETCH_NUM);  
    echo json_encode($result);
    

答案 2 :(得分:0)

感谢所有提供的答案,没有你我无法做到。最后,我实现了如下所希望的结果,可能它不优雅但有效:

 $stmt_count= $user->countbyespeciality();

                while ($resultcount = $stmt_count->fetch(PDO::FETCH_ASSOC)){

                    $prueba.= "{$resultcount['subarea']},";
                    $prueba2.= "{$resultcount['number']},";

            }

                $string=rtrim($prueba, ",");
                $string2=rtrim($prueba2, ",");
                $final="[{$string}]";
                $final2="[{$string2}]";

输出是[某事,某事] [1,2,]如预期的那样。 再次感谢!