gpt4 book ai didi

PHP PDO : Could my PHP be cleaner/more efficient?

转载 作者:行者123 更新时间:2023-11-29 06:10:31 24 4
gpt4 key购买 nike

所以我最终决定在 2012 年更新我的 PHP,学习使用 PHP 的 PDO。到目前为止,一切都很顺利,但我不知道我正在做的事情是否真的是最好的方法。

在此示例中,我查询数据库以显示用户发表的帖子,然后为每个帖子显示 2 条评论。所以基本上我所做的就是抓取我的帖子,将其循环出来,然后在该循​​环中我查询数据库以获取每个帖子的前两条评论。然而,在我四处奔走并开始全年使用它之前,我想我应该看看是否有更干净的方法来做到这一点。

因此,如果有人能抽出一点时间来查看这一小段代码,并让我知道是否有更干净、也许更有效的方法来执行此操作,我将非常感激。随意挑剔!

<?php
$hostname = 'localhost';
$username = 'root';
$password = 'root';
$database = 'database';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Get Posts
$stmt = $dbh->prepare("SELECT * FROM posts");
$stmt->execute();
$result = $stmt->fetchAll();
}
catch(PDOException $e)
{
echo $e->getMessage();
}

//Loop through each post
foreach($result as $row) {

echo $row['post'];

//Get comments for this post
$pid = $row['id'];
$stmt = $dbh->prepare("SELECT * FROM comments WHERE pid = :pid LIMIT 2");
$stmt->bindParam(':pid', $pid, PDO::PARAM_STR);
$stmt->execute();
$c_result = $stmt->fetchAll();

//Loop through comments
foreach($c_result as $com) {

echo $com['comment'];

}
}
//Close connection
$dbh = null;
?>

最佳答案

嗯,这实际上是两个问题。

.1。对于您正在使用的代码来说,它非常丑陋。使用原始 API 函数总是会让你的代码变得丑陋、无聊和重复。仅运行一个查询就需要五行!
您不认为只有一行会更好吗?线路仅由有意义运算符组成?

$comments = $db->getAll("SELECT * FROM comments WHERE pid = :pid LIMIT 2",$row['id']);

.2。对于算法来说 - 还不错。
假设您*要循环遍历所有数据库,而只是请求每页 10-20 个帖子,则不会进行额外的 10-20 个基于主键的查找大大减慢你的应用程序。

.3。奖励轨道。
您真正可能想要考虑的是“业务逻辑/表示逻辑分离”。为什么不先获取所有数据,然后才开始输出呢?它会让你的代码更加干净。

关于PHP PDO : Could my PHP be cleaner/more efficient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389261/

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