私は最終的にPHPのPDOを使うことを学ぶことにより、2012年のPHPを更新することにしました。これまでのところすべてがうまくいっていますが、私がそれについて行う方法が本当にそれを実行する最良の方法かどうかは分かりません。PHP PDO:私のPHPはより洗練された/より効率的なものになりますか?
この例では、データベースにクエリを送信して、ユーザーが行った投稿を表示し、各投稿に対して2つのコメントを表示しています。だから私がやっていることは、自分の投稿をつかみ、それをループして、そのループの中で、すべての投稿の上位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;
?>
もっと効率的です。抽象的な効率性はありません。あなたがそれを書き直す必要はなく(そしてあなたの時間を無駄にしないので)、最も効率的なソリューションが、見える時点から、機能するソリューションです。それは数えますか? – zerkms
http://codereview.stackexchange.com/ –
より良い回答が得られるかもしれません。http://codereview.stackexchange.com/ – dan