第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Unserialize() 不工作,未捕獲錯(cuò)誤:調(diào)用布爾值上的成員函數(shù)

Unserialize() 不工作,未捕獲錯(cuò)誤:調(diào)用布爾值上的成員函數(shù)

PHP
四季花海 2022-12-23 14:44:36
我有 3 個(gè)類,我將它們序列化并保存到數(shù)據(jù)庫(kù)中。其中 2 個(gè)很好,我能夠毫無(wú)問題地檢索對(duì)象并反序列化它們。有問題的類有 9 個(gè)屬性。我將一個(gè)數(shù)組傳遞給類,同時(shí)保存:  $customer= new Customer($customerValues);  $serializedCustomer = serialize($customer);  $auftrag = new Auftrag($auftragValues);  $serializedAuftrag = serialize($auftrag);客戶對(duì)象看起來像:O:5:"Customer"?:{s:9:"*anrede";s:4:"Herr";s:7:"*name";s:11:"ABC";s:8:"*firma";s:11:"test";s:10:"*strasse";s:16:"teststr. 33";s:6:"*plz";s:5:"1234";s:8:"*stadt";s:12:"testcity";s:8:"*mobil";s:12:"0123456789";s:10:"*telefon";s:12:"0123456789";s:8:"*email";s:18:"test@mail.com";}和 Auftrag 對(duì)象:O:7:"Auftrag":37:{s:14:"*auftrag_typ";s:7:"Angebot";s:9:"*breite";s:3:"2.5";s:8:"*tiefe";s:3:"4.5";s:8:"*hoehe";s:4:"1.00".....我在兩個(gè)類中都有以下功能:public function getProperties() {      $properties = get_object_vars($this);      return $properties;    }然后我從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并反序列化它們:require_once($_SERVER['DOCUMENT_ROOT'] . '/php/Customer.php');require_once($_SERVER['DOCUMENT_ROOT'] . '/php/Auftrag.php');$res = $dbc->fetchAllResults(PDO::FETCH_ASSOC);$custArr = unserialize($res[0]['customer']);$auftragArr = unserialize($res[0]['auftrag']);$customer= $custArr->getProperties();$auftrag = $auftragArr->getProperties();當(dāng)我打印時(shí):print("<pre>".print_r($customer,true)."</pre>"); 我得到一個(gè)錯(cuò)誤:Fatal error: Uncaught Error: Call to a member function getProperties() on boolean in,但它工作得很好(我得到一個(gè)數(shù)組),當(dāng)我打印時(shí):print("<pre>".$auftrag,true)."</pre>"); 當(dāng)我使用時(shí):print("<pre>".$res[0]['customer'],true)."</pre>");我得到了對(duì)象,就像上面一樣。除了屬性外,這兩個(gè)對(duì)象幾乎相同。我注意到,有一個(gè)“?” 在客戶中"Customer"?:。這可能是個(gè)問題嗎?或者我在這里做錯(cuò)了什么?
查看完整描述

2 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

我通過執(zhí)行以下操作找到了解決方案:


$toDatabse = base64_encode(serialize($data));  // Save to database

$fromDatabase = unserialize(base64_decode($data)); //Getting Save Format 

而@astax 的解決方案在指出問題方面也是正確的。但是通過使用 base64_encode,它確保安全地序列化對(duì)象。這可以防止數(shù)據(jù)被破壞,因?yàn)?base64 將數(shù)據(jù)轉(zhuǎn)換為任何排序規(guī)則都可以采用的 ASCII。


查看完整回答
反對(duì) 回復(fù) 2022-12-23
?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

根據(jù)PHP 文檔,如果字符串無(wú)效則unserialize返回。false這就是您的情況 -$custArr不是Customer類的實(shí)例,因此是錯(cuò)誤。

如果您error_reporting(E_ALL);在 unserialize 之前添加,您將看到錯(cuò)誤消息,因?yàn)?unserialize 會(huì)在出現(xiàn)錯(cuò)誤時(shí)發(fā)出通知。序列化后的字符串確實(shí)有問題。

我的猜測(cè)是對(duì)象的值中有一些非 ASCII 符號(hào),并且由于字符集不匹配而在保存和從數(shù)據(jù)庫(kù)讀取后丟失了它們。如果您使用 MySQL,此頁(yè)面可能會(huì)有所幫助 - https://dev.mysql.com/doc/refman/8.0/en/charset.html


查看完整回答
反對(duì) 回復(fù) 2022-12-23
  • 2 回答
  • 0 關(guān)注
  • 110 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)