对不起我以前的英语不好。我想问为什么在从我的数据库反序列化后,数组后面有一个文本“1”。仔细查看图片:
my database (the data is serialized)
<div class="form-group">
<label class="control-label col-md-3">Dokumen Pendukung:</label>
<div class="col-md-4">
<p class="form-control-static"> <?php echo print_r(unserialize($supportDocument)); ?> </p>
</div>
</div>
我必须尝试检查我的代码,没有可疑的代码。请帮帮我..谢谢。
public function addProposal($DocumentSupport) {
try {
$stmt = $this->connect->prepare("INSERT INTO tbl_proposal(supportDocument)VALUES(:supportDocument)");
$stmt->bindParam(":supportDocument", serialize($DocumentSupport));
$stmt->execute();
return $stmt;
} catch (PDOException $e) {
echo "Error " . $e->getMessage();
}
}
答案 0 :(得分:3)
您正在打印print_r()的返回值:
echo print_r(unserialize($supportDocument));
并且,如记录所示,它返回true
:
当
return
参数为TRUE
时,此函数将返回一个字符串。否则,返回值为TRUE
。
...当converted to string时打印为1
:
布尔值
TRUE
转换为字符串"1"
。布尔FALSE
是 转换为""
(空字符串)。这允许转换回来 在布尔值和字符串值之间。
你应该摆脱echo
:
print_r(unserialize($supportDocument));
您还可以切换到var_dump(),这会产生更精确的输出(例如,它不会将布尔值转换为空字符串):
var_dump(unserialize($supportDocument));