PHP PDO数据到Json_Encode +但只出现第一行

时间:2013-02-25 10:24:59

标签: php json select pdo encode

                       $sql='SELECT word,language,acceptable FROM profanity;';
                       $pds=$database_miscellaneous->pdo->prepare($sql); 
                       $pds->execute(); 
                       //$row=$pds->fetch();
        foreach($pds as $row) {
            $profanityText = json_encode(array('word' => $row['word'],
                                       'language' => $row['language'],
                                       'acceptable' => $row['acceptable']));
        }

我有上面的代码。捕获它是有效的,但只有数据库的第一行进入json数组。我直接针对数据库运行查询,它会提取所有数据。

我猜测我的foreach循环有一个问题,或者很多我正在进行PDO调用的方式。

任何想法?

3 个答案:

答案 0 :(得分:3)

问题是每次循环时,保存json编码值$profanityText的变量都会被覆盖。

使用此

    $rows = array()
    foreach($pds as $row) {

        $rows[] = array('word' => $row['word'],
            'language' => $row['language'],
            'acceptable' => $row['acceptable']);
    }
    $profanityText = json_encode($rows);

或者,如果你还没有操纵你的数据,你可以直接打电话(如deceze所述)

$profanityTest = json_encode($pds->fetchAll(PDO::FETCH_ASSOC));

答案 1 :(得分:2)

您只需将每个新值分配给$profanityText,但应该像这样编辑一样添加。

$profanityText = array();
foreach($pds as $row) {
    $profanityText[] = array('word' => $row['word'],
                                   'language' => $row['language'],
                                   'acceptable' => $row['acceptable']);
}

echo json_decode($profanityText);

答案 2 :(得分:1)

这是PDO,老兄! 当你可以的时候不要重复自己:

$sql='SELECT word,language,acceptable FROM profanity;';
$pds=$database_miscellaneous->pdo->prepare($sql); 
$pds->execute(); 
$profanityText = json_encode($pds->fetchAll(PDO::FETCH_ASSOC));