gpt4 book ai didi

php - 在另一个区域重用 PDO 查询 block 最佳实践

转载 作者:行者123 更新时间:2023-11-29 11:35:56 25 4
gpt4 key购买 nike

我刚刚从 mysql_ 过渡到 PDO

有人向我指出了一些有用的教程,但有一个问题我没有看到提出,我想检查一下我是否以“正确的方式”进行操作

我想在一页内的两个不同区域(都是不同的 PHP 代码块)中重用放入数组中的相同值。根据媒体查询(隐藏/不隐藏等),两者的样式不同

目前我正在运行这样的查询:

<?php
$data = $pdo->query("SELECT * FROM sitelinks WHERE `show` = 'yes' ORDER BY `Order` ASC")->fetchAll();
foreach ($data as $links)
{
echo "\n<li class=\"linkitem\"><a href=\"{$links['URL']}\">{$links['Text']}</a></li>";
}
?>

所以我的理解是,我应该能够加载并循环页面上其他地方的 $links 变量。我这样做是这样的:

<?php
foreach ($data as $links)
{
echo "\n<li class=\"desktoplinkitem\"><a href=\"{$links['URL']}\">{$links['Text']}</a></li>";
}
?>

这是正确的吗?它正在工作,但再次使用 ($data as $links) 似乎有点疯狂。接下来是一个非常愚蠢的问题,但是为什么 $data 变量必须存储为 $links 。难道它不能直接作为 foreach ($links) 运行吗?

最佳答案

假设您稍后没有编写一些代码来更改/销毁这两种用法之间的 $data 变量,那么这样做是没有问题的。事实上,如果可以的话,它可以减少重用数据的运行时间,而不是再次获取数据。

您需要记住的是 ->fetchAll() 将结果集中的所有行返回到数组中。从那时起,它就是您的数组,一旦 ->fetchAll() 完成,您就可以对它执行任何您喜欢的操作

第二个问题:

foreach

foreach ($data as $links)

处理数组$data并一次返回一个事件(在您的情况下为行)。所以你必须给它另一个变量名。该名称可以是任何名称。

如果你为事物使用合理的名称,它们通常看起来像这样

foreach ($rows as $row)

foreach ($sitelinks as $sitelink)

对原始数组使用复数,对数组每次迭代返回的单个出现使用单数。

所以我会像这样修改你的代码:

<?php
$sitelinks = $pdo->query("SELECT *
FROM sitelinks
WHERE `show` = 'yes'
ORDER BY `Order` ASC")
->fetchAll();

foreach ($sitelinks as $sitelink) {
echo "\n<li class=\"linkitem\"><a href=\"{$sitelink['URL']}\">{$links['Text']}</a></li>";
}
?>

以及数组的第二次使用

<?php
foreach ($sitelinks as $sitelink) {
echo '\n<li class=\"desktoplinkitem\"><a href=\"{$sitelink['URL']}\">{$sitelink['Text']}</a></li>";
}
?>

关于php - 在另一个区域重用 PDO 查询 block 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36604442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com