2013-05-18 2 views
0

Я делаю подобную систему в php, и у меня есть код, чтобы получить все имена пользователей, которым понравился пост, используя идентификатор сообщения, и если им не понравился пост, он будет покажите кнопку, которая говорит, как сообщение, и если у них нет, она покажет кнопку, которая говорит в отличие от сообщения, и если нет, она скажет: «Никто не любил, чтобы почта была первой». Но когда я добавляю его, это получить только 1 идентификатор пользователя, даже если несколько человек понравился пост, как я это исправил, вот мой код:SQL только получает 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>'; 
} 
+0

не могли бы вы хотя бы описать таблицу? спасибо –

+2

избавиться от всего, что стиль; это не имеет значения и делает ваш код массивным. – imulsion

+0

У вас есть 'WHERE' в вашем запросе. Это может быть вашей проблемой. Есть ли в вашем массиве более $ $ post_row ['id'] '? Вы эхом отзывали этот массив? – ntgCleaner

ответ

0

Познай мощность PDO с подготовленными операторами и 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.

+0

Неустранимая ошибка: вызов неопределенного метода db :: prepare() in/homepages/43/d456722778/htdocs/forum/core/topic.php on line 608 – Malik

+0

@Malik: разместите свой код, где вы определяете $ db, пожалуйста. – michi

Смежные вопросы