Php WooCommerce:在post元数据数组中获取特定值

Php WooCommerce:在post元数据数组中获取特定值,php,sql,wordpress,woocommerce,deserialization,Php,Sql,Wordpress,Woocommerce,Deserialization,我只想返回以下查询的可退款金额7.83美元。如有任何建议,将不胜感激 SELECT post_id, meta_value FROM postmeta WHERE meta_key = 'wc_connect_labels' AND post_id =1561 返回-> a:1:{i:0;a:19 {s:8:"label_id";i:3379931;s:8:"tracking";s:22:"9405536205309714712744"

我只想返回以下查询的可退款金额7.83美元。如有任何建议,将不胜感激

SELECT post_id, meta_value
FROM postmeta
WHERE meta_key = 'wc_connect_labels'
AND post_id =1561
返回->

a:1:{i:0;a:19 {s:8:"label_id";i:3379931;s:8:"tracking";s:22:"9405536205309714712744";s:17:"refundable_amount";d:7.83;s:7:"created";i:1615557045479;s:10:"carrier_id";s:4:"usps";s:12:"service_name";s:20:"USPS - Priority Mail";s:6:"status";s:9:"PURCHASED";s:22:"commercial_invoice_url";N;s:12:"package_name";s:20:"Regional Rate Box A1";s:9:"is_letter";b:0;s:13:}s:11:"product_ids";a:2:{i:0;i:1078;i:1;i:931;}s:15:"receipt_item_id";i:73747484;s:12:"created_date";i:1615557050000;s:11:"expiry_date";i:1631109049000;s:15:"main_receipt_id";i:55385442;s:4:"rate";d:7.83;s:8:"currency";s:3:"USD";s:12:"label_cached";i:1615557053000;}}

您可以使用WordPress函数get_post_meta(),该函数反序列化数组值,如下所示,您可以轻松获得“可退款金额”值,如:

$post_id = 1561;

$connect_labels = get_post_meta( $post_id, 'wc_connect_labels', true );

if ( isset($connect_labels['refundable_amount']) ) {
    $refundable_amount = esc_attr( $connect_labels['refundable_amount'] );
}
或者使用
WC\u数据
方法
get\u meta()
WC\u产品
对象执行以下操作:

$product = wc_get_product( 1561 ); // If needed

$connect_labels = $product->get_meta('wc_connect_labels');

if ( isset($connect_labels['refundable_amount']) ) {
    $refundable_amount = esc_attr( $connect_labels['refundable_amount'] );
}

两者都应该可以工作。

您可以通过
JSON\u decode()
函数解析JSON字符串。由于您使用的是WordPress&WooCommerce,您可能需要创建一个插件。显示的查询无法返回显示的输出-这是WordPress做出的输出解释…也许
SELECT JSON\u EXTRACT()
可以帮助您,但是,我也同意Raptor和Akina的观点。谢谢您LoicTheAztec,但是我需要使用mysql和PHP来构建自定义报告。我需要查询另外两个表以及我列出的内容。