2016-09-26 3 views
0

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

вот мой код

// $stmt = $con->prepare("SELECT * FROM user WHERE id = ? "); 
    // $stmt->bind_param('s', $id); 
    // if($stmt->execute()){ 
    // //$result = $stmt->get_result(); 
    // if($result->num_rows > 0){ 
    // //  username exists 
    // //$stmt->bind_result($firstname, $lastname, $user_type, $email, $profession); 
    // echo 'No Data Found for this use'; 
    // }else{ 
    // $row = $stmt->fetch_array(); 
    // $stmt = "select firstname, lastname, user_type, profession, email, dob, gender, country, phone, bio, address, created_at from user where id = $userId"; 
    // if ($stmt = $mysqli->prepare($stmt)) { 

    //  /* execute statement */ 
    //  $stmt->execute(); 
    // // $stmt->store_result(); 
    // // if($stmt->num_rows){ 
    //  /* bind result variables */ 
    //  $stmt->bind_result($firstname, $lastname, $user_type, $profession, $email, $dob, $gender, $country, $phone, $bio, $address, $created_at); 

    //  /* fetch values */ 
    //  while ($stmt->fetch()) { 
    // // } 

    $stmt = $con->prepare("SELECT firstname, lastname, user_type, profession, email, dob, gender, country, phone, bio, address, created_at FROM user WHERE id = ?"); 
    $stmt->bind_param('s', $userId); 
    $stmt->execute(); 
    $stmt->store_result(); 
    if(!$stmt->num_rows > 0) { 
     echo 'No Data Found for this user'; 
     } 
    else { 
    $stmt->bind_result($firstname, $lastname, $user_type, $profession, $email, $dob, $gender, $country, $phone, $bio, $address, $created_at); // <- Add; #args = #cols in SELECT 

     $row = $stmt->fetch(); 

Как вы можете видеть, что есть 1 открывающая скобка } в коде выше, что, поскольку он был компресс с HTML.

ниже HTML-код

 <!-- self post back url --> 
    <?php 
     $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 
    ?> 

    <table> 

     <tr> 
      <td> 
       <center> 
         <img src="userfiles/avatars/<?php echo $row['avatar'];?>" width="150" height="150"> 
        </center> 

      </td> 
     </tr> 
     <tr> 
      <td><label><strong>First Name</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['firstname'];?> </td> 
     </tr> 
      <tr> 
      <td><label><strong>Last Name</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['lastname'];?> </td> 
     </tr> 
    <tr> 
      <td><label><strong>User Type</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['user_type'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Profession</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['profession'];?> </td> 
     </tr> 
    <tr> 
     <tr> 
      <td><label><strong>Phone</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['phone'];?> </td> 
     </tr> 
    <tr> 
      <td><label><strong>Gender</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['gender'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Date Of Birth</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['dob'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Email</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['email'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Country</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['country'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Address</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['address'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Biography</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['bio'];?> </td> 
     </tr> 
     <tr> 
      <td><label><strong>Join Date</strong></label></td> 
      <td></td> 
      <td><label><?php echo $row['created_at'];?> </td> 
     </tr> 

    </table> 

    <?php 

    } 

    $mysqli->close(); 
    ?> 

приведенный выше код работать, но не отображаются данные пользователя. вот скриншот: http://prntscr.com/cmfa0n

ответ

0

Посмотрите на это заявление здесь,

$row = $stmt->fetch(); 

От the documentation, возвращается

->fetch() метод,

Истинный успех. Данные не были неправдоподобным
FALSE, произошла ошибка
NULL Нет больше строк/данные существует или усечение данных произошло

Это не возвращает строку из результирующего набора.

С помощью метода ->bind_result(), вы уже переплетены переменные для хранения результата, и что ->fetch() делает это, она извлекает результаты из подготовленного оператора в связанных переменных, так что вы можете непосредственно использовать $firstname, $lastname, $user_type и т.д. в ваш стол.

Примечание: Вы не выбрали avatar колонки в SELECT заявления, а также добавить $avatar в $stmt->bind_result($firstname, $lastname,...) заявления также.

+0

OK посмотрел на документ ... это то, что вы пытаетесь сказать, мне не нужен -> fetch(); –

+0

Извините за мое невежество –

+0

@OlamilekanOshodi Да, вам нужно '-> fetch()'. То, что я говорю, после этого выражения '$ stmt-> fetch();', вы можете напрямую использовать эти ограниченные переменные '$ firstname',' $ lastname' в своей таблице для отображения всех данных. –

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