2013-05-21 62 views
0

我是新來的PHP,並使用串行數據的數據庫中的多個數據,序列化從同一列

我有有2個表,用戶&字符數據庫。 characterId與userId有關係。

的用戶有2個字符,所以我希望得到下面的代碼中的數據:

public static function getCharacter() { 
     $mysqli = Controller_Core_Config::getDB(); 
     if ($mysqli != null) { 
      $user = unserialize($_SESSION['user']); 
      $sql = "SELECT * FROM `character` WHERE `userId`='" . $user->getId() . "'"; 
      $result = $mysqli -> query($sql); 

      if ($result !== FALSE && $result -> num_rows > 0) { 
       $row = $result -> fetch_assoc(); 
       $_SESSION["character"] = serialize(new Model_Game_User(
        $row['characterId'], 
        $row['characterName'], 
        $row['userId'], 
        $row['level'] 
        )); 
      } else { 
       echo "You have no characters."; 
      } 
     } 
    } 

,如果我想表明我使用下面的代碼中的數據:

//some code 
$character = unserialize($_SESSION["character"]); 
$output .= $character->getCharacterName() . "<br>"; 
//some code 

我的問題是,當我在的var_dump($ _SESSION [ 「字符」]) 我只得到1個字符:

string(202) "O:15:"Model_Game_User":4:{s:28:"Model_Game_UsercharacterId";s:1:"3";s:30:"Model_Game_UsercharacterName";s:9:"adminious";s:23:"Model_Game_UseruserId";s:1:"2";s:22:"Model_Game_Userlevel";s:1:"3";}"

而我的問題是,序列化數據中可能有多個「字符」嗎?

+1

你爲什麼要在所有序列數據? – moonwave99

回答

0

你沒有循環你的結果。剛剛添加到發現會話

您需要像這樣的東西代替你if塊的第一個結果:

if ($result !== FALSE && $result -> num_rows > 0) { 
    $_SESSION["character"][] = array(); 
    while($row = $result -> fetch_assoc()) { 
     $_SESSION["character"][] = serialize(new Model_Game_User(
      $row['characterId'], 
      $row['characterName'], 
      $row['userId'], 
      $row['level'] 
      )); 
    } 
} 
+0

您好,非常感謝您的回答,但是額外的[]會給我以下錯誤:致命錯誤:[]運算符不支持字符串 –

+0

首先錯誤是因爲您需要初始化'$ _SESSION [「字符」] '作爲一個數組,用'$ _SESSION [「character」] = array();'在循環結果之前,重新讀取你的問題,看起來你甚至沒有循環遍歷結果,所以只加載第一個在會話中發現的字符。 – fullybaked

+0

感謝您的回答,我會考慮將其放入循環中並查看結果,否則我必須使用其他方法。再次感謝你的幫助。 –