我正在编写Drupal / Ubercart与内部管理系统之间的集成部分。
客户使用具有属性的Ubercart产品(例如Plaque,其可以包含姓名,公司,注册日期和月份)。下订单时,为属性输入的值将写入uc_order_products
,其中data
字段包含用户输入的实际值。据我所知,这是唯一存储最终用户输入的产品属性值的地方。
编码的属性值使用在Drupal表中看到的格式来编码对象:
a:3:{s:10:"attributes";a:4:{s:26:"Name (to appear on plaque)";a:1:{i:0;s:10:"Some
Namee";}s:7:"Company";a:1:{i:0;s:28:"Some Company Name Goes here_";}s:19:"Certification
Month";a:1:{i:0;s:0:"";}s:18:"Certification Year";a:1:
{i:0;s:4:"2011";}}s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}
并且扩展了,它看起来像这样:
a:3:
{
s:10:"attributes";
a:4:
{
s:26:"Name (to appear on plaque)";
a:1:
{
i:0;
s:10:"Some Namee";
}
s:7:"Company";
a:1:
{
i:0;
s:28:"Some Company Name Goes Herep";
}
s:19:"Certification Month";
a:1:
{
i:0;
s:0:"";
}
s:18:"Certification Year";
a:1:
{
i:0;
s:4:"2011";
}
}
s:9:"shippable";
s:1:"1";
s:6:"module";
s:10:"uc_product";
}
我有一种简单的方法可以使用SQL获取本文中的各个字段值吗?我可以编写一个SQL函数来查找具体内容,但我想知道是否有人知道现有的MySQL方法(可能在Drupal中)会这样做。
谢谢!
答案 0 :(得分:2)
这是一个序列化数组,意味着在Drupal将其插入数据库之前由PHP's serialize() function处理的数据。使用opposite function unserialize()将该字符串转换回数组。
答案 1 :(得分:0)
不知道是否存在任何内置解决方案,但我最终编写了一个SQL函数,它将Name (to appear on plaque)
作为参数文本。然后,该函数定位文本并提取后续的{ ... }
块,并从中检索相应的字符串值。粗糙,但在这种情况下工作。
如果有人有更好的解决方案,我想听听它!