我知道标题可能有点混乱,所以我在这里解释一下。
这是我的代码:
<?php
ini_set('display_errors', 'On');
$db = new PDO('mysql:host=127.0.0.1;dbname=phppdo', 'root', '');
$users = $db->query("SELECT * FROM pdophp");
$table = $users->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Fetching</title>
</head>
<body>
<?php foreach ($table as $tabledata) { ?>
<ul>
<li><?php echo $tabledata['id']; ?></li>
<li><?php echo $tabledata['email']; ?></li>
<li><?php echo $tabledata['first_name'] . ' ' . $tabledata['last_name']; ?></li>
</ul>
<?php } ?>
</body>
</html
基本上我尝试做的是同时回显first_name和last_name键。有没有办法比后续更有效地做到这一点?
echo $tabledata['first_name'] . ' ' . $tabledata['last_name'];
我只是发现这行代码非常笨拙,我想以更好的方式做到这一点。
提前致谢。
答案 0 :(得分:1)
效率是一种可能的指标,但您还需要考虑可读性和可维护性。
对于大型项目,我会考虑模板引擎,但除此之外你可以使用here-document:
{{1}}
答案 1 :(得分:1)
也许你可以使用sql的CONCAT功能:
$users = $db->query("SELECT *,CONCAT(first_name, ' ', last_name) as all_name FROM pdophp");
然后在视图上
<li><?=$tabledata['all_name']?></li>
我希望它可以帮到你。
答案 2 :(得分:0)
没有。那没有。如果你想要一个echo
,你可以先将所有字符串连接成一个变量,但你的语法不会更漂亮。
如果您希望模板看起来更好(并且它还有许多其他好处),请查看Twig模板引擎之类的内容。
无论哪种方式,您都应该考虑将逻辑和表示分开,例如使用MVC框架。无论你在建造什么;在某些时候,你的方法可能会成为一个难以维持的混乱。
答案 3 :(得分:0)
我使用heredoc进行操作,因此我不需要使用concatenation
,quotes
和几个php
块,即:< / p>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Fetching</title>
</head>
<body>
<?php foreach ($table as $tabledata) {
echo <<< LOL
<ul>
<li>{$tabledata['id']}</li>
<li>{$tabledata['email']}</li>
<li>{$tabledata['first_name']} {$tabledata['last_name']}</li>
</ul>
LOL;
}
?>
</body>
</html>