gpt4 book ai didi

sql - 为什么 "wc_get_product_id_by_sku()"函数在循环中返回相同的 id?

转载 作者:行者123 更新时间:2023-12-04 07:52:10 26 4
gpt4 key购买 nike

我有一个类似于以下内容的 XML:

<?xml version="1.0" encoding="utf-8"?>
<Products exportdate="01-04-2021 11:30">
<Product>
<Productnumber>10203</Productnumber>
<EAN>87196XXXXX</EAN>
<Stock>1</Stock>
<Price>1079,00</Price>
</Product>
<Product>
<Productnumber>10370</Productnumber>
<EAN>87197XXXXX</EAN>
<Stock>1</Stock>
<Price>1000,00</Price>
</Product>
</Products>
当我运行以下代码时,我希望从提供的 SKU 中获取相应的帖子 ID:
    foreach ($xml->children() as $row) {
$stock = $row->Stock;
$sku = $row->Productnumber;
$p_id = wc_get_product_id_by_sku( $sku );
echo $sku. " (PID: " .$p_id. ") -> Stock: " .(int)$stock."<br>";
}
但是,我似乎每次都将列表中的第一个帖子 ID 取回。这是数据库问题吗?我是否错误地使用了该功能?
10203 (PID: 59049) -> Stock: 1
10370 (PID: 59049) -> Stock: 1
10212 (PID: 59049) -> Stock: 0
11503 (PID: 59049) -> Stock: 12
11504 (PID: 59049) -> Stock: 3
12015 (PID: 59049) -> Stock: 0
12016 (PID: 59049) -> Stock: 0
12030 (PID: 59049) -> Stock: 0
12031 (PID: 59049) -> Stock: 0
12032 (PID: 59049) -> Stock: 0
12522 (PID: 59049) -> Stock: 0
12523 (PID: 59049) -> Stock: 70
12524 (PID: 59049) -> Stock: 109
当我使用它时也会发生同样的情况:
$p_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
SKU 实际上与我的产品数据库中的 SKU 相对应:
SKU
我对可能的原因感到非常困惑。

最佳答案

如果您使用的是 PHP simplexml_load_file 功能我有你的解决方案。
您将获得这样的 SKU:

$sku = $row->Productnumber;
但是 $sku的值变量不是字符串而是 SimpleXMLElement 具有 XML 节点值的对象。如果您运行 var_dump($sku);你会得到这个(就我而言):
object(SimpleXMLElement)#2217 (1) { [0]=> string(5) "10203" }
此外,您应该在日志文件中收到通知,因为您将对象而不是字符串传递给 wc_get_product_id_by_sku功能,类似这样:
Notice: wpdb::prepare was called incorrectly. Unsupported value type (object).
解决方案
您可以通过强制转换来解决问题 到字符串 .然后替换:
$sku = $row->Productnumber;
和:
$sku = (string) $row->Productnumber;
您将看到正确的产品 ID。我已经测试了代码并且它有效。

关于sql - 为什么 "wc_get_product_id_by_sku()"函数在循环中返回相同的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66902433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com