проблема отображения информации о нескольких пользователях по идентификатору

0

Я пытаюсь получить его, где он получит идентификатор друзей из таблицы друзей, а затем получить информацию друзей из таблицы пользователей. Я пробовал использовать foreach, но не повезло.

Вот то, что я имею прямо сейчас, где он только вторит одному другу, а не тем, которые у меня есть в таблице. Любые идеи о том, как я могу исправить эту проблему? Может быть, я не использовал для каждого правильно? Заранее спасибо!

<?php 
//Gets users information from users. 
$stmt = $DB_con->prepare('SELECT  friendsid FROM friends WHERE userid='.$_SESSION['user']['id']);
$stmt->execute();

if($stmt->rowCount() > 0) {
    $row=$stmt->fetch(PDO::FETCH_ASSOC);
    extract($row);
}   else {
    $friendsid = $row['friendsid'];
} 

$stmt = $DB_con->prepare('SELECT username,userprofile,status FROM users WHERE id='.$friendsid);
$stmt->execute();

if($stmt->rowCount() > 0) {
    while($row=$stmt->fetch(PDO::FETCH_ASSOC))  {
        extract($row);
        ?>  
            <div class="row">
                <div class="col-sm-3">
                    <div class="well">
                        <h4><strong><?php echo $row['username'];?></strong></h4>
                        <img src="images/profile/<?php echo $userprofile;?>" class="img-circle" height="70" width="70" alt="Avatar">
                    </div>
                </div>
                <div class="col-sm-9">
                    <div class="well">
                        <h3 class="text-left"><?php echo $row['status'];?></h3>
                    </div>
                </div>
            </div>

<?php
    }
} else {
?>

<?php
}
?>
  • 0
    Это не то, как подготовленные заявления должны быть использованы. Спараметрировать.
  • 0
    Я бы избавился от строк 4-20 и получил бы все данные одним запросом. Используйте join . Не используйте extract .
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Подготовленные операторы используют параметры, и вы должны использовать JOIN.

$stmt = $DB_con->prepare('SELECT u.* FROM users AS u JOIN friends AS f ON u.id = f.friendsid WHERE f.userid = :user_id');
$stmt->bindParam(':user_id', $_SESSION['user']['id']);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    // Do whatever you want with $row['id'], $row['username'], $row['userprofile']
}
  • 0
    Буду ли я извлечь строку еще? отобразить всех друзей пользователей?
  • 0
    @ BigfellaHQ Нет, не извлекайте. Почти никогда не добывать. $row будет иметь ваши данные.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню