Итак, я наконец решил обновить свой PHP на 2012 год, научившись использовать 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;
?>