2011-07-20 81 views
0

誰能告訴我如何從下面的代碼顯示下一個值?從函數顯示數組內容?

在我user.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; 
    } 
} 

在我的索引PHP文件時,我嘗試:

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

我旁邊的結果:

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

我如何迴應名字和姓氏?

回答

3

此:

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

分配的$row['firstName']到可變$userFirstname的值,然後把該分配(的$row['firstName']的值)到一個數組的結果。這是相同的寫作:

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

要聲明與userFirstname一個數組,你需要寫:

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

從這裏,你有一個正常的陣列,您可以訪問:

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

儘管這看起來有點笨重,說實話,你在這裏沒有很好地使用對象。您應該將從數據庫查詢的數據保存到對象的屬性中,然後使用getter逐個或全部訪問這些屬性。但是,如何設計一個合適的對象有點超出了這個答案的範圍。

+0

+1的建議,以*修復*通過增加按鍵的排列格式。 –

+0

我這樣做,但如何顯示,我嘗試echo $ User-> UserInfoQuery('userFirstname'); 但是我的結果是「數組」 – 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

我這樣做,但如何顯示,我嘗試echo $ User-> UserInfoQuery('userFirstname');但我的結果是「陣列」 – Stefan