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配列に入ります。DB に対して直接クエリを実行すると、すべてのデータが取得されます。

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 に答える