2011-07-20 8 views
0

次のコードから次の値を表示する方法を教えてもらえますか?私がしようとすると、私のインデックスのphpファイルで関数から配列内容を表示していますか?

class User { 
    protected $userID; 
    protected $useremail; 
    protected $userPassword; 
    public function __construct() { 
     $this->userID = preg_replace('#[^0-9]#i', '', 
      $_SESSION['user_id']); 
     $this->useremail = preg_replace('#[^[email protected]_.-]#i', '', 
      $_SESSION['user']); 
     $this->userPassword = preg_replace('#[^A-Za-z0-9]#i', '', 
      $_SESSION['user_password']); 
    } 

public function UserInfoQuery() { 
    $sql = "SELECT * FROM users WHERE id = 
     '$this->userID' AND email = '$this->useremail' AND 
     password = '$this->userPassword' LIMIT 1"; 
    $res = mysql_query($sql) or die(mysql_error()); 
    $userMatch = mysql_numrows($res); 

    if ($userMatch == 1) { 
     while($row = mysql_fetch_array($res)) { 
      $userData = array(
       $userFirstname = $row['firstName'], 
       $userLastname = $row['lastName'], 
       $userBirthdate = $row['birthDate'], 
       $userSex = $row['sex'], 
       $userEmail = $row['email'], 
       $userCountry = $row['country'], 
       $userRegion = $row['region']); 
      } 
     } 

     return $userData; 
    } 
} 

$User = new User(); 
print_r($User->UserInfoQuery()); 

私が持っている次の結果:

Array ([0] => firstname [1] => 
    lastname [2] => 
    1990-11-23 [3] => 
    male [4] => 
    mail [5] => 
    Srbija [6] => town) 

を私user.phpファイルで

iは、次のコンテンツを持っていますどのように私は最初と最後の名前だけをエコーすることができますか?

答えて

3

これ:

array($userFirstname = $row['firstName']) 

変数$userFirstname$row['firstName']の値を代入し、配列に割り当て($row['firstName']の値)の結果を置きます。これは、書き込みと同じです:

$userFirstname = $row['firstName']; 
array($row['firstName']); 

キーuserFirstnameを持つ配列を宣言するには、あなたが記述する必要があります。

array('userFirstname' => $row['firstName']) 

をここから、あなたがアクセスすることができ、通常の配列を持っている:

$userinfo = $User->UserInfoQuery(); 
echo $userinfo['userFirstname']; 

これは幾分厄介なようですが、正直なところ、あなたはここでオブジェクトをよく使用していません。データベースから照会されたデータをオブジェクトのプロパティに保存し、ゲッターを使用してこれらのプロパティにアクセスしてください。どのように適切なオブジェクトを設計するかは、この回答の範囲/ポイントを少し超えています。

+0

+1を。 –

+0

私はそれを行うが、表示する方法、私はエコー$を試してください$ User-> UserInfoQuery( 'userFirstname'); しかし、私の結果は "Array" – Stefan

+0

@Stefan次に、 '$ User-> UserInfoQuery( 'userFirstname')'のように呼び出すときにユーザ名だけを返すようにメソッドを書く必要があります。私の答えの更新を参照してください。あなたのオブジェクトは 'UserInfoQuery()'を呼び出すたびにデータベースに問い合わせるべきではありません。 – deceze

0

あなたは、アレイ次の方法が必要です:*修正*キーを追加することにより、アレイ形式に示唆するために

$userData = array(
      'Firstname' = $row['firstName'], 
      'lastname = $row['lastName'], 
      'birthdate = $row['birthDate'], 
      'sex = $row['sex'], 
      'email = $row['email'], 
      'country = $row['country'], 
      'region = $row['region'] 
     ); 
} 
+0

私はそれを行うが、表示する方法、私はエコー$ User-> UserInfoQuery( 'userFirstname');しようとするしかし、私の結果は "配列" – Stefan

関連する問題