0

私はphpでいいねシステムを作成しています。投稿IDを使用して投稿を気に入った人のすべてのユーザー名を取得するコードがあり、投稿が気に入らなかった場合は、投稿のように言うボタンが表示されます。そうでない場合は、投稿とは異なるというボタンが表示され、いいねがない場合は、「誰もその投稿を最初に気に入った人はいません」と表示されます。しかし、それを追加すると、複数の人が投稿を気に入っていても、ユーザー ID は 1 つしか取得できません。これを修正するにはどうすればよいですか。コードは次のとおりです。

$fancy = $db->fetch("SELECT * FROM " . $prefix . "_fancy WHERE post_id = '" . $post_row['id'] . "' ORDER BY id");

if ($fancy) {
    $name = $user->name($fancy['account_id']);
    if ($account['id'] !== $fancy['account_id']) {
        $fancytext = '<div>'.$name.' Like this post.<!-- BEGIN logged_in --> <a href="./?area=forum&amp;s=topic&amp;t='.$topic_id.'&amp;f='.$pid.'"><img src="./template/default/images/like.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
    } else {
        $fancytext = '<div>'.$name.' Like this post.<!-- BEGIN logged_in --> <a href="./?area=forum&amp;s=topic&amp;t='.$topic_id.'&amp;unf='.$pid.'"><img src="./template/default/images/unlike.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
    }
} else {
    $fancytext = '<div><i>No one has liked this post, be the first!</i> <!-- BEGIN logged_in --><a href="./?area=forum&amp;s=topic&amp;t='.$topic_id.'&amp;f='.$pid.'"><img src="./template/default/images/like.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
}
4

1 に答える 1

0

準備済みステートメントfetchAll:

$sql = "SELECT * FROM $prefix_fancy WHERE post_id = :pid ORDER BY id";
$stmt = $db->prepare($sql);
$stmt->execute(array(':pid' => $post_row['id']));
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);

$posts選択したすべてのレコードを保持します。foreach反復するために使用します。

于 2013-05-18T16:44:39.367 に答える