0
                       $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 调用的方式很多。

有任何想法吗?

4

3 回答 3

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));
于 2013-02-25T10:27:55.397 回答
2

您只是将每个新值分配给,$profanityText但应该像此编辑一样附加它。

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

echo json_decode($profanityText);
于 2013-02-25T10:29:17.427 回答
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));
于 2013-02-25T11:06:33.327 回答