【发布时间】:2017-01-22 23:02:08
【问题描述】:
我在一个名为 ManageNews 的类中有这个函数:
function getLatestNews($limit){
$query = $this->link->query("SELECT * FROM news ORDER BY date DESC LIMIT $limit");
$count = $query->rowCount();
if ($count !== 0){
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
return $row;
}
}
}
当我尝试从数据库中获取新闻帖子的信息时,我将它们作为数组获取,我尝试使用 fetchAll(PDO::FETCH_ASSOC),但它会将它们放入多维数组中,因此我无法使用 $row[0]['column name']; 获取它们,因为它们不都是 [0] 其余的是 [1] [2] [3] 等等...所以这就是我的做法:
$news = new ManageNews();
$row = $news->getLatestNews('5');
$article_id = $row['article_id'];
$user_id = $row['user_id'];
$title = $row['title'];
$content = $row['content'];
$date = $row['date'];
print_r($row);
$user = new ManageUsers();
$row2 = $user->getUserById($user_id);
if($row2 !== 1){
$user_name = $row2['username'];
$title2 = str_replace(" ","-",$title);
echo '<div class="row">
<div class="col-lg-12"><h3 class="para"><a class="para" href="http://news.red-sec.net/article/'.$article_id.'/'.$title2.'">'.$title.'</a></h3>
<p class="para">Written by: '.$user_name.'</p>
</div>
</div>';
}
我正在做print_r($row); 来查看数组。当它工作时,它只会无限次打印最新的......我不知道它为什么这样做,任何帮助表示赞赏
这就是现在的样子: http://prntscr.com/dz2b02
【问题讨论】:
-
因为每次调用
getLatestNews()时都会执行相同的查询并返回相同的第一个结果 -
我正在通过 getLatestNews('5');仅获取 5 条最新消息
-
函数执行的第一件事是执行查询:
$query = $this->link->query("SELECT * FROM news ORDER BY date DESC LIMIT $limit");... 每次调用函数时都会重复此操作.... 然后函数将返回第一行(如果有行) 或 0.... 它从不尝试获得第二个或第三个或第四个等 -
th 函数只被调用一次,我知道我做了 fetchAll(PDO::FETCH_ASSOC) 但是当我这样做时,我得到一个包含不同数组的数组。我不知道如何访问这些数组中的每一个数组看起来像 [ [ [news post 1] ] [ [news post 2] ] [ [news post 3] ] [] [] ]
-
有没有办法在数组上运行 foreach 以获取其中的单独数组??