2017-08-13 111 views
1

我正在为opencart用户开发一个android应用程序。我需要解码购物车信息,并从oc_customer表中识别产品标识数量等。 我想这OpenCart购物车信息解密

$sql = "SELECT cart FROM oc_customer WHERE email='an registered user email';"; 
$result = mysqli_query($con, $sql); 
if (mysqli_num_rows($result) == 1) { 
    $row = mysqli_fetch_assoc($result); 
    var_dump(unserialize(base64_decode($row['cart']))); 
} 

我收到此错误

unserialize(): Error at offset 0 of 36 bytes 

谁能给我一个线索,我怎么能得到这个工作

回答

1

(根据以往的问题,我假设你正在使用OpenCart 3.0.2.0)。

要获取客户的购物车内容,请根据他的电子邮件从oc_customers表中获取客户的编号,然后在oc_cart表中查找该客户编号。 (这是OpenCart 2.3+中的做法; oc_customers表的购物车字段用于OpenCart的旧版本。)

+0

没有oc_cart表。在客户表 –

+1

中有一个叫做cart的列,至少从2.3.0.2开始,oc_cart表已经存在了。 –

+0

感谢您的信息。我正在使用以前的一个。但是,我解决了我的问题。请编辑你的答案一点。 –

0

在进行了几项研究之后,我发现我错误地解码了购物车列的全文。 后来,不是解码全文,而是解码双引号文本和反序列化,这给了我一个包含product_id的数组。

此外,Opencart有一个独立的oc_cart表,没有这些复杂性。使用版本2.3+可避免所有这些解码

-1

您无需使用base64_decode()解析购物车信息。只是使用

unserialize(($row['cart']); 
+0

不,只有反序列化给出了错误'在44的偏移量0出错' –