【问题标题】:I can not get data from the database due to the dynamic value provided由于提供的动态值,我无法从数据库中获取数据
【发布时间】:2019-08-11 06:34:53
【问题描述】:

wordpress 上的网站。要打印预订的 PDF 票,我使用插件:woocommerce 和 woocommerce-pdf-invoices-packing-slips。在打印之前,在信函模板中,我需要从数据库表中添加一些数据。该插件有一个变量$this->order_id - 它包含订单号。

我试图对数据库进行这样的查询:

global $wpdb;
$wt_order_ids = $wpdb->query($wpdb->prepare("SELECT * FROM {$wpdb->prefix}my_table WHERE order_id = %d", $this->order_id));

因此,什么都没有显示。但是,如果对请求稍作修改:

$wt_order_ids = $wpdb->query($wpdb->prepare("SELECT * FROM {$wpdb->prefix}my_table WHERE order_id = 777"));

那些。代替 $this->order_id,注册一个已经在表中的订单号,例如 777,然后请求按预期工作,我得到了我需要的数据。

我想也许在我尝试访问数据库的那一刻,实际的订单号还没有在数据库中。那为什么我可以使用echo或print_r打印$this->order_id,但访问数据库时却不能使用呢?

请帮我解决这个问题。我真的需要使用 $this->order_id

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    您可以将查询字符串完整地传递给$wpdb->query(),如以下代码:

    global $wpdb;
    $query = "SELECT * FROM {$wpdb->prefix}my_table WHERE order_id = {$this->order_id}";
    $wt_order_ids = $wpdb->get_results($query);
    

    【讨论】:

    • 不幸的是,它没有帮助。还有其他选择吗?
    • 你必须打印$query变量才能看到这个变量是什么。
    • 这是变量包含的内容:SELECT * FROM wp_my_table WHERE order_id = 874
    • @VladSiy 有一个带有 874 order_id 的订单?检查你的数据库,告诉我你看到了什么。
    • 有,有订单874
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多