【问题标题】:Wordpress PHP variables in get_results()get_results() 中的 Wordpress PHP 变量
【发布时间】:2017-02-28 12:21:57
【问题描述】:

当我说时,我有一个可以正常工作的功能

$results = $wpdb->get_results(
                "SELECT meta_value 
                FROM wp_woocommerce_order_itemmeta 
                WHERE order_item_id = '21'
                AND meta_key = '_qty"
            );

此函数返回 4,这是我将在我的数据库中查找的正确数字。

不幸的是,这段代码将一个空数组返回给 get_results()。将变量传递给 $wpdb 时我的代码有问题,有人知道吗?

$results = $wpdb->get_results(
                "SELECT meta_value 
                FROM wp_woocommerce_order_itemmeta 
                WHERE order_item_id =" .$order_item_id.
                "AND meta_key = '_qty'"
            );

【问题讨论】:

  • 该字符串将评估为"SELECT meta_value FROM wp_woocommercer_order_itemmeta WHERE order_item_id =24AND meta_key = '_qty"` 我相信您的问题是您的变量和下一个字符串输入之间的字符串中没有空格。“24AND”
  • 在下面查看我的答案,以帮助您避免将来出现同样的问题

标签: php mysql wordpress woocommerce


【解决方案1】:

在这种特定情况下,我认为这是一个简单的问题,即字符串连接中缺少空格。但是,可能有一种更合适的方法来准备您的语句,通过使其更容易发现来防止这种情况发生,并遵循其他良好的查询构建实践

Wordpress 准备好的报表
通过使用$wpdb->prepare(),您可以使用(大部分)sprintf () 语法来帮助您构建查询。

$query = $wpdb->prepare("SELECT meta_value 
            FROM wp_woocommerce_order_itemmeta 
            WHERE order_item_id = %d
            AND meta_key = '_qty'", $order_item_id);
$results = $wpdb->get_results($query);

更多信息请访问wordpress codexprepared statements in general

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2012-11-17
    相关资源
    最近更新 更多