2016-09-26 7 views
0

ユーザーデータを表示してプロファイルテーブルを作成しようとしています。以下のコードでご覧になるコードサンプルをいくつか使用していますので、いくつかコメントしていますので注意してください。準備されたステートメントでユーザーデータを取得しています

は、ここでは、上記のコードでは1つのオープンブラケット}があるあなたが見ることができるように私のコード

// $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(); 

である、それは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

ここにこの文を見て、the documentationから

$row = $stmt->fetch(); 

->fetch()メソッドが返す、

TRUE成功:ここでのスクリーンショットです。
FALSEエラーが
NULLを発生し、データがフェッチされていないもう行/データが存在するか、データの切り捨ては、それが結果セットから任意の行を返さない

を発生しました。 ->bind_result()方法で

、すでに結果格納用変数をバインドさ、そして何->fetch()してきたで、それは、バインド変数にプリペアドステートメントから結果を取得し、あなたが直接$firstname$lastnameを使用することができ、$user_typeなどであなたのテーブル。

注:あなたはSELECT文でavatar列を選択し、また$stmt->bind_result($firstname, $lastname,...)文で$avatarを追加していません。

+0

OKはdocを見ています...あなたが言うことをしようとしているのは、私が - > fetch();を必要としないということです。 –

+0

私の無知をごめんね。 –

+0

@OlamilekanOshodiはい、あなたは ' - > fetch()'が必要です。私が言っていることは、このステートメント '$ stmt-> fetch();'の後に、すべてのデータを表示するために、それらの有界変数 '$ firstname'、' $ lastname'をテーブル内で直接使用できるということです。 –

関連する問題