Php 在循环中存储变量并将其传递给控制器
以下是我的代码/布局:Php 在循环中存储变量并将其传递给控制器,php,arrays,loops,model-view-controller,Php,Arrays,Loops,Model View Controller,以下是我的代码/布局: while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $username = $row['username']; $first_name = $row['first_name']; $last_name = $row['last_name']; } 正如您所看到的,我在我的“users”数据库表中循环,有数千个用户 如何存储信息并将其传递给控制器以显示信息?您可以使用以下方法将它们全部提取到一个数组中
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$username = $row['username'];
$first_name = $row['first_name'];
$last_name = $row['last_name'];
}
正如您所看到的,我在我的“users”数据库表中循环,有数千个用户
如何存储信息并将其传递给控制器以显示信息?您可以使用以下方法将它们全部提取到一个数组中,而不是使用
while
循环:
但是您真的要获取整个users表吗?你的应用程序似乎需要做很多工作。通常对于索引之类的东西(例如),您会使用分页,这样就不必为每个请求获取数千行。在不知道您面临的具体问题的情况下回答这个问题是很困难的。但是,如果您正在寻求关于模型视图控制器的基本指导,这个极其简化的课程大纲可能会提供一些指导:
是的,你说得对。不知道如何做分页现在,所以我这样做是为了学习。
fetchAll
和Nate的答案有什么区别?Nate的答案是在获取后将所有内容放入数组中?效果是一样的fetchAll
只是一种快捷方式。好的,谢谢。在一个性能和速度都很重要的场景中(比如社交网络),什么是最快、最有效的方法?我认为fetchAll
可能比在循环中将单行提取到数组中要快一点,尽管我还没有测试过它。但是,如果您执行相同的查询并获取相同的记录,那么差异将可以忽略不计。选择一组大小合理的记录、优化查询并添加适当的索引将比选择哪种获取方法在性能上产生更大的差异。
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
class MyModel
{
public function getData()
{
$toReturn = array();
// Prepare & execute your SQL statement.
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$toReturn[] = array(
$row['username'],
$row['first_name'],
$row['last_name']
);
}
return $toReturn;
}
}
class MyController
{
public function indexAction()
{
$model = new MyModel();
// Retrieve the data from the model.
$dataForView = $model->getData();
// Send the data to the view so it can be displayed.
$this->render($dataForView);
}
}