$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调用的方式。
任何想法?
答案 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));