2011-12-21 56 views
1
try { 
    if (isset($_SESSION['list']) > 0) {   
     $test = serialize($_SESSION["list"]); 
     $sQuery = "INSERT INTO table (id, date) VALUES ('$test', NOW())"; 
     $oStmt = $db->prepare($sQuery); 
     $oStmt->execute(); 
    } 
    else { 
     echo 'No data'; 
    } 
} 

後,在我的數據庫中,我看到這一點:我如何反序列化從數據庫中的數據是連載

1 a:1:{i:1;s:1:"5";} 2011-12-21 

的$ _SESSION [「名單」]存儲ID和數量。數據a:1:{i:1; s:1:「5」;}如下:i = id,s = id:「quantity」,我將它讀作id = 1,數量id = 1是5,我正確嗎?

現在我想選擇數據和反序列化數組。

try { 
    $sQuery = "SELECT * FROM table"; 
    $oStmt = $db->prepare($sQuery); 
    $oStmt->execute(); 

    while($aRow = $oStmt->fetchALL(PDO::FETCH_ASSOC)) { 
     $id = unserialize($aRow['id']); 

     foreach($id as $id => $quantity) { 

      echo $id.', '; 
     } 
    } 
} 

catch(PDOException $e) { 
    $sMsg = '<p> 
    Regelnummer: '.$e->getLine().'<br /> 
    Bestand: '.$e->getFile().'<br /> 
    Foutmelding: '.$e->getMessage().' 
    </p>'; 
    trigger_error($sMsg); 
} 

我在做什麼錯了,或者我能做什麼,我可以從數據庫中選擇ID和QUANTITY?

回答

0

序列化/反序列化部分看起來好像沒什麼問題,但$oStmt->fetchALL(我覺得應該是$oStmt->fetch(,並在foreach($id as $id => $quantity) {使用另一個變量來保存密鑰,而不是ID,如foreach($id as $key => $quantity) {

而且,你不迴應任何地方的數量。更改echo $id.', ';echo $key.' '.$quantity;或東西,告訴我們的輸出是什麼,所以我們可以進一步幫助。

+0

謝謝,這是有益的檸。我改變$ oStmt->使用fetchall(至$ oStmt->取(和改變的foreach($ id作爲的$ id => $量){到的foreach($ id作爲$鍵=> $量){和結果是什麼exactlly我需要,再次感謝你。 – dymo 2011-12-21 14:12:09