在foreach中回显PDO对象的最简单技术是什么?


What is the simplest technique for echoing out a PDO object inside of a foreach?

在这个愉快的周末,我第一次申请实习。这就是我目前所处的位置,我试图找出是否有更好的技术,然后所有的business->$column_name,我正在做和跳出PHP。

$sql = $db->query('SELECT * FROM companies ORDER BY state ASC');
$results = $sql->fetchAll(PDO::FETCH_OBJ);
**html code snipped for space**
<?php foreach($results as $business): ?>
<p>
<strong><?php echo $business->name; ?></strong><br />
<?php echo $business->city . ', ' . $business->state; ?><br />
Call <?php echo $business->phone; ?><br />
<!-- needs to check if website & twitter are present -->
<?php
if (isset($business->twitter)) {
echo 'Follow us on Twitter <a href="http://twitter.com/' . $business->twitter . '">@' . $business->twitter . '</a>';
}
?>
</p>
<?php endforeach; ?>

有办法清理这些吗?特别是当我进入网站和推特的时候,我必须在文本之后做href,这让我觉得很乱。

对于这样的小事,我通常只是回显HTML的字符串字面量。此外,不要忘记围绕变量数据的htmlspecialchars(),以确保您的HTML有效,并且您不会最终受到潜在的XSS攻击。

foreach ($result as $business);
echo '<p>',
     '<strong>', htmlspecialchars($business->name), '</strong><br/>',
     htmlspecialchars($business->city), ', ', htmlspecialchars($business->state),
// ... etc

对于那些不那么简单的事情,一个更好的选择是使用模板引擎,比如Smarty。

$smarty->assign('business', $business');

在你的模板中你可以使用:

<p>
    <strong>{$business->name}</strong><br/>
    {$business->city}, {$business->state}
    {* etc *}

请记住,如果使用模板引擎,则会增加开销。