使用变量运行PHP循环

时间:2014-10-17 13:01:23

标签: php mysql mysqli

搜索解决方案 - 一无所获。也许我使用了错误的术语。

我尝试拆分服务器端操作和html结构。所以我创建了两个不同的文件,首先是index.php,然后是operation.php

在operation.php的内部,我做了一个mysqli查询,并将mysql表的内容提取到不同的变量中:

$query = "SELECT * FROM work";
    if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
        $title = $row["title"]; 
        $desc = $row["desc"];
        $id = $row["id"];
        $date = $row["date"];
        $time = $row["time"];
        $kat = $row["kat"];
        $user = $row["user"];
    }
    $result->free();
    }
$mysqli->close();
?>

现在我尝试在index.php中使用此功能,包括operation.php并使用它

<div><?php echo $title ?></div>

一切正常,但我想循环这个div并为每个标题获得一个<div>。数据库中的行。

这怎么可能?

提前致谢。

1 个答案:

答案 0 :(得分:1)

好吧,你可以在顶部声明一个数组

$rows = array();
...
while ($row = $result->fetch_assoc()) {
    $rows[] = $row;
}
....

foreach($rows as $row) {
    echo '<div>' . $row['title'] . '</div>';
}

这可能是一个解决方案。

另一方面,如果要分离逻辑和视图,可以查看MVC设计模式,或使用模板引擎(例如Twig)

模板引擎允许你做的是这样的事情(未经测试; - )

$variables = array();
while ($row = $result->fetch_assoc()) {
    $variables['rows'][] = $row;
}
$twig->render('index.html.twig', $variables);

在单独的index.html.twig中,您可以使用模板语言

...
<body>
{% for row in rows %}
    <div>{{ row.title }}</div>
{% endfor %}
</body>

我希望这会有所帮助:)