Вывод из базы данных

Рейтинг: 0Ответов: 1Опубликовано: 14.02.2015

Здравствуйте. Прошу помощи с выводом из базы данных. Пожалуйста, помогите разобраться.

Делаю на странице профиль пользователя, есть база данных с таблицей users и данными о 2-х пользователях. Но когда вывожу данные на страницу, то сталкиваюсь с такой проблемой. Сессии читаются нормально, каждый раз сайт приветствует того пользователя, под которым я залогинился, а информация о пользователе остаётся одна и та же. Сайт постоянно выдаёт информацию о том пользователе, который стоит первый в таблице. Вот мой код:

<h4>Профиль <?php echo  $login; ?></h4>
<?php
include_once("bd.php");
$strSQL = "SELECT * FROM users";
$rs = mysql_query($strSQL);
$row = mysql_fetch_array($rs);
if($row) {
echo "Ваш e-mail: ".$row['email']." <br>"  ;
echo "Steam community: ".$row['community']." <br>" ;
echo "Количество баллов: ".$row['bals']." <br>" ;
echo "Участий в турнирах: ".$row['uchtour']." <br>" ;
echo "Выйграно турниров: ".$row['wintour']." <br>" ;
echo "Выйграно матчей: ".$row['winmatch']." <br>" ;
}
mysql_close();
?>

Ответы

▲ 1Принят
mysql_fetch_array()

Эта функция за 1 обращение обрабатывает 1 ряд строки в бд, т.е. в $rs у вас живет ровно столько строк, сколько есть в бд, и чтобы вывести их все, Вам надо использовать что-то вроде

while($row = mysql_fetch_array($rs) 
{
    echo "Ваш e-mail: "        .$row['email']    ." <br>";
    echo "Steam community: "   .$row['community']." <br>";
    echo "Количество баллов: " .$row['bals']     ." <br>";
    echo "Участий в турнирах: ".$row['uchtour']  ." <br>";
    echo "Выйграно турниров: " .$row['wintour']  ." <br>";
    echo "Выйграно матчей: "   .$row['winmatch'] ." <br>";
}

В оф. мануале это все описано и есть примеры.

P.S. Если Вам надо получить запись по конкретному пользователю, то лучше исправить SQL запрос, напр., что-то типа

$strSQL = "SELECT `*` FROM `users` WHERE `login` like '{$login}'";

Если у Вас есть поле id в базе, то лучше делать выборку по нему и повесить на него primaty ключ.

ВАЖНО! Всегда должным образом обрабатывайте данные, которые получаете извне, особенно если используете их в sql запросах, так как если этого не делать, то можно "слить" Вашу БД, ну или просто полностью её уничтожить.

В php для этого есть спец. функции, напр., mysql_escape_string.

Также рекомендую почитать оф. документацию по безопасности приложений.