2016-03-22 4 views
1

Я немного сомневаюсь, если я нахожусь на правильном пути здесь. У меня есть база данных mysql, где у меня есть данные для входа пользователей. Я делаю страницу профиля, где я хотел бы, чтобы информация о пользователе показывалась пользователю. Теперь я пытаюсь вернуть первое имя в столбце базы данных. Я на правильном пути с этим кодом?SELECT column mysql

<td> 
    Firstname 
    <?php 
     $stmt = $mysqli->prepare("SELECT firstname FROM login"); 

     $stmt->execute(); 

     $fname = null; 

     $stmt->bind_result($fname); 

     while($stmt->fetch()) { 
      $firstname = // Code here 
      echo $firstname; 
     } 

     $stmt->close(); 
     $mysqli->close(); 
    ?> 
    </td> 

Update:

Я попытался сделать код немного меньше. Этот код фактически загружает пользователей, но это все пользователи в базе данных, и не только пользователь, с которым я вошел. Если запрос SELECT будет назначен с основным ключом, если мне нужно только первое имя для текущего пользователя, я вошел в систему как?

<td> 
    Firstname 
    <?php 
     $sql ="SELECT firstname FROM login;"; 
     $res = $mysqli->query($sql); 
     //print($res); 
     if($res){          
      while($row = $res->fetch_assoc()){ 
       echo $row['firstname']; 

      }        
     } 
     ?>   
    </td> 
+0

Что не работает с вашим текущим кодом? Кроме того, какой код у вас есть в '// Code here'. Это синтаксическая ошибка в настоящее время из-за отсутствия полуколонии. – Chris

+2

Вы уже привязали свой столбец 'firstname' к переменной' $ fname', поэтому в любое время вы делаете 'fetch()', вы получаете следующее имя в результатах в свою переменную '$ fname', поэтому ваш цикл может просто be 'while ($ stmt-> fetch()) {echo $ fname; } ' –

+0

Я еще не делал цикл while, но мне кажется, что так много кода возвращает имя пользователя? – McDuck4

ответ

1

Если вы играете вокруг с PHP и пытается узнать, как дела, вы на большом пути. Если вы планируете развернуть этот код в Интернете, у вас есть несколько вопросов:

  1. Ваша разметка кажется выключенной. Почему вы ставите все первые имена в одном <td>?
  2. У вас не должно быть SQL-запроса, происходящего внутри разметки. Что делать, если вы хотите показать результаты из кеша или текстового файла? В идеале вы бы даже не смешали PHP и HTML. Некоторые люди используют встроенные шаблоны PHP, но обычно предпочитают использовать язык шаблонов, например, нефрит или ветку.
  3. Выравнивание кода несовместимо.

Но если вы просто видите, что может делать PHP, хорошая работа. Продолжайте пробовать вещи. Это лучший способ узнать для большинства людей. Другие любят читать книгу, а затем пытаются попробовать.

+0

Привет, Fuser. Спасибо за ваш ответ и хорошие моменты. '' находятся внутри 'tbody'. Это просто сайт для тестирования, поэтому, когда мои функции работают так, как они должны, я отведу их на свой настоящий сайт, где у меня есть div и отдельные папки с сценариями, поэтому html и php не будут смешиваться. Согласен только потому, что я проверяю свои функции, но, возможно, правильно, что я должен быть последовательным на этом, а также – McDuck4

2

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

//$stmt->bind_result($fname); 
while($column = $stmt->fetch()) { 
    $firstname = $column['firstname']; 
    echo $firstname; 
} 

Или вы можете просто использовать переменную, перед тем связыванию

$stmt->bind_result($fname); 
while($stmt->fetch()) { 
    echo $fname; 
} 

вы могли бы оптимизировать запрос и ограничить TResult только один пользователь, добавив WHERE условие запроса, вы с использование идентификатора пользователя, например

SELECT firstname FROM login WHERE userid = 1 
+0

Большое спасибо за ваш ответ. Я попробую это немедленно. – McDuck4

+0

Если я хочу получить имя пользователя, которое я зарегистрировал на своем веб-сайте, я должен использовать что-то вроде WHERE u_id = $ user_id ");? – McDuck4

+0

Да, где у вас есть идентификатор пользователя? У вас есть сеанс или что-то? – Fabio