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 ['list']存储ID和QUANTITY。
数据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 :(得分:0)
序列化/反序列化部分对我来说很合适,但我认为$oStmt->fetchALL(
应该是$oStmt->fetch(
,并且foreach($id as $id => $quantity) {
使用另一个变量来保存密钥而不是id,例如{ {1}}。
此外,您不会在任何地方回显数量。将foreach($id as $key => $quantity) {
更改为echo $id.', ';
或其他内容并告诉我们输出结果是什么,以便我们进一步提供帮助。