2011-12-21 2 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 [ «список»] хранит идентификатор и количество.

Данные a: 1: {i: 1; s: 1: "5";} следующие: i = id, s = id: "количество", я читаю это как 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) { использовать другую переменную для хранения ключа вместо идентификатора, как foreach($id as $key => $quantity) {.

Кроме того, вы не повторяете количество в любом месте. Измените echo $id.', '; на echo $key.' '.$quantity; или что-то в этом роде и сообщите нам, что такое выход, чтобы мы могли помочь дальше.

+0

Спасибо, это было verry helpfull. Я изменил $ oStmt-> fetchAll (на $ oStmt-> fetch (и изменил foreach ($ id как $ id => $ quantity) {на foreach ($ id как $ key => $ quantity) {и результат был точно Мне нужно. Еще раз спасибо. – dymo

Смежные вопросы