Php 是否有可能降低获取和显示数据的复杂性?
我使用下面的代码是通过PHP从表中获取数据,以便在网站上显示数据Php 是否有可能降低获取和显示数据的复杂性?,php,mysql,pdo,Php,Mysql,Pdo,我使用下面的代码是通过PHP从表中获取数据,以便在网站上显示数据 $stri = "SELECT a, b, c, d, e, f FROM table"; $stat = $conn->prepare($stri); if ($stat->execute()) { while ($resu = $stat->fetch(PDO::FETCH_ASSOC)) { foreach ($resu as $key=>$value) { echo $va
$stri = "SELECT a, b, c, d, e, f FROM table";
$stat = $conn->prepare($stri);
if ($stat->execute()) {
while ($resu = $stat->fetch(PDO::FETCH_ASSOC)) {
foreach ($resu as $key=>$value) {
echo $value . "<br>";
}
echo "<br><br>";
}
}
$stri=“从表中选择a、b、c、d、e、f”;
$stat=$conn->prepare($stri);
如果($stat->execute()){
而($resu=$stat->fetch(PDO::fetch_ASSOC)){
foreach($resu作为$key=>$value){
回声$value.“
”;
}
回声“
”;
}
}
但是,使用两个循环似乎是多余的。在允许独立处理每行中的每一项的同时,是否有更有效的方法来完成相同的任务
我计划用它做如下事情,这就是为什么我需要能够独立处理这些项目
if ($stat->execute()) {
while ($row = $stat->fetch(PDO::FETCH_ASSOC)) {
echo '<div class="row">';
foreach ($row as $key=>$value) {
echo '<div class=' .$key. '>';
if (empty($value)) echo '---<br>';
else echo $value;
echo '</div>';
}
echo '</div>';
}
}
if($stat->execute()){
而($row=$stat->fetch(PDO::fetch_ASSOC)){
回声';
foreach($key=>$value的行){
回声';
if(空($value))回显“---
”;
否则,将返回$value;
回声';
}
回声';
}
}
功能检查($val)
{
如果(空($val))
{
回声“--
”;
}
其他的
{
echo$val;
}
}
$stri=“从t中选择a、b、c、d、e、f”;
尝试
{
$stat=$conn->prepare($stri);
$stat->execute();
$results=$stat->fetchAll(PDO::FETCH_ASSOC);
foreach($结果为$key=>$value)
{
回波内爆(“”,数组映射(“检查“,$value));
回声“
”;
}
}
捕获(例外$e)
{
错误日志($e->getMessage());
}
我对你的代码做了一点修改。我更喜欢使用try-catch方法,而不是使用if来捕获错误
但是,使用两个循环似乎是多余的
我不知道这意味着什么,但总的来说,降低复杂性是完全可能的。为此,您需要全面使用PDO,而不仅仅是作为mysql_query()的替代品。分离关注点也会有所帮助
首先以数组的形式获取数据
$sql = "SELECT a, b, c, d, e, f FROM table";
$stmt = $conn->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll();
然后在页面的HTML部分的某个地方显示它
<?php foreach ($data as $row): ?>
<div class="row">
<?php foreach ($row as $key=>$value): ?>
<div class="<?=$key?>">
<?php if (!$value): ?>
---<br>
<?php else ?>
<?=$value?>
<?php endif ?>
</div>
<?php endforeach ?>
</div>
<?php endforeach ?>
我不想把它们放在一个字符串中,因为我计划在每个字符串周围插入特定的HTMLelement@Anthony按照Deno所示构建$results
数组后,可以在try-catch块之外使用它。您将循环使用它(与Deno相同),并根据需要使用数组项构建html结构。在$results=…
之后写入此命令,以便在屏幕上查看数组结构:echo'。打印($results,TRUE)。“”代码>@aendeerei谢谢,我会试试的。我编辑了我的问题。我不确定你是否看到了。我想我需要处理这些物品independently@Anthony是的,我现在看到了。我写了一个答案。正如Deno一样,我建议使用fetchAll
构建结果集。您将看到,我将获取代码与html代码分离。在我的观点中,fetchAll()在获取多条记录时更优雅。当然,您也可以使用fetch()进行获取。注:我从不在我的代码中使用而,但那只是我,我害怕再次遇到无限循环:-)它对我来说似乎并不多余。您认为这在哪些方面是多余的?@blubear这两个循环对于独立地处理每行的每一项是绝对必要的吗?如果您选择使用fetch方法,这是一种不错的选择。如果您选择像下面的答案一样使用fetchAll方法,那么您将有一个循环。无论如何,与下面的答案相比,我看不出您的代码是多么冗余。这是由于您选择使用fetch而导致的额外循环。您需要循环以获得每个配对。您可以在mysql中将空值设置为--
@blubear,因此与fetchAll
相比,少一个循环不会提高性能/是一个优势?实际上我刚刚实现了这个。首先获取数据,格式化数据,并将其存储为变量,然后显示数据。:)但我最初的实现中什么不是PDO?
<?php foreach ($data as $row): ?>
<div class="row">
<?php foreach ($row as $key=>$value): ?>
<div class="<?=$key?>">
<?php if (!$value): ?>
---<br>
<?php else ?>
<?=$value?>
<?php endif ?>
</div>
<?php endforeach ?>
</div>
<?php endforeach ?>