2013-11-27 6 views
1

Я просмотрел сайт для подобных проблем с решениями и не решил исправить проблему, которую я имею. У меня есть две таблицы; «friendlist» и «users». Я пытаюсь использовать «FriendID» из «friendlist» для получения информации из таблицы «users». Все работает отлично до цикла while($row = mysqli_fetch_array($result)){}, после чего ничего не печатает.php wont echo results from internal join query

Мой код выглядит следующим образом:

$query = "SELECT friendlist.FriendID, users.Name, users.Surname, users.Picture 
       FROM friendlist    
       INNER JOIN users 
       ON friendlist.FriendID = users.Id 
       WHERE friendlist.UserId ='".$id."'"; 
$result = mysqli_query($con, $query); 

if(!$result){ 
    echo "<br/><h4>You currently do not have any friends. Please click the Find Friends button to find a friend</h4>"; 
}else{ 
    echo "<center><br/>Here is a list of all your friends:<br/>"; 
    echo "<table>"; 
    while($row = mysqli_fetch_array($result)){ 
     echo "<tr>"; 
     echo "<td>Pro Pic: <img style='width:200px; height:200px' alt='No Profile Picture' src='uploads/" .$row['Picture']. "' /></td>"; 
     echo "<td>Name :" .$row['Name']. "</td>"; 
     echo "<td>Surname :" .$row['Surname']. "</td>"; 
     echo "<td><form method='post' action='viewFriend.php'>"; 
     echo  "<input type='hidden' name='friendId' value='".$row['FriendID']."'/>"; 
     echo  "<input type='submit' name='View' value='View Profile'/>"; 
     echo "</form></td>"; 
     echo "</tr>"; 
    } 
    echo "</table></center>"; 
} 

ничего не отображается в браузере. Только текст заголовка уровня 4: показывает «Вот список всех ваших друзей». Но после этого его пустое пространство.
Я проверил sql-запрос на mySql, и он отлично работает. Я понятия не имею, что случилось. Любая помощь будет высоко ценится. Спасибо

+0

echo mysqli_num_rows ($ result); и проверить, сколько строк их? –

+2

Вы, скорее всего, склонны к внедрению SQL и должны исправить это как можно скорее, если вы не хотите, чтобы кто-либо мог показывать всех пользователей во всей системе. Используйте подготовленные операторы и свяжите переменные. Волшебное изменение 'mysql_' в' mysqli_' не исправляет это. – h2ooooooo

+0

Или запустите свой запрос сначала в phpmyadmin, чтобы проверить наличие у них содержимого. –

ответ

0

Проблема заключается в вашем SQL-запросе. Вы не разместили friendlist.UserId на выбранной части. Вот почему предложение where не видит, где его сравнить.

$query = "SELECT friendlist.FriendID, users.Name, users.Surname, users.Picture 
        FROM friendlist    
        INNER JOIN users 
        ON friendlist.FriendID = users.Id 
        WHERE friendlist.UserId ='".$id."'"; 
+0

Я пробовал это, но он не работал :(Я не думаю, что имеет смысл выбрать friendlist.UserId, если я пытаюсь использовать его в качестве критерия поиска ... если вы знаете, что я имею в виду – user1726443

+1

Я просто понял, что мой ошибка была, так глупо !!> __ <$ id еще не имеет установленного значения. В начале скрипта, когда я устанавливал свой сеанс: 'session_start(); $ id = $ _SESSION ['id'] ; ' Я думал, что уже присвоил значение $ id со значением. Мне пришлось снова назначить его' $ id = $ _SESSION' (не знаю, почему именно), и теперь он работает. Спасибо за ваши предложения и извините за неудобства ... PS Нужно ли удалить вопрос, потому что код не был проблемой? – user1726443

0

Ваш код верный, но вы пропустите объявление переменной $ id. Используйте, как показано ниже.

//initialize the $id as. 

$id = $_REQUEST['id']; 

    $query = "SELECT friendlist.FriendID, users.Name, users.Surname, users.Picture 
        FROM friendlist    
        INNER JOIN users 
        ON friendlist.FriendID = users.Id 
        WHERE friendlist.UserId ='".$id."'"; 
    $result = mysqli_query($con, $query); 

    if(!$result){ 
     echo "<br/><h4>You currently do not have any friends. Please click the Find Friends button to find a friend</h4>"; 
    }else{ 
     echo "<center><br/>Here is a list of all your friends:<br/>"; 
     echo "<table>"; 
     while($row = mysqli_fetch_array($result)){ 
      echo "<tr>"; 
      echo "<td>Pro Pic: <img style='width:200px; height:200px' alt='No Profile Picture' src='uploads/" .$row['Picture']. "' /></td>"; 
      echo "<td>Name :" .$row['Name']. "</td>"; 
      echo "<td>Surname :" .$row['Surname']. "</td>"; 
      echo "<td><form method='post' action='viewFriend.php'>"; 
      echo  "<input type='hidden' name='friendId' value='".$row['FriendID']."'/>"; 
      echo  "<input type='submit' name='View' value='View Profile'/>"; 
      echo "</form></td>"; 
      echo "</tr>"; 
     } 
     echo "</table></center>"; 
    }