Wordpress $wpdb no result

时间:2012-11-20 作者:Deepak Kundu

我的函数中有以下代码。php

$code = \'EUR\';
global $wpdb;
$query = \'SELECT * FROM \';
$query .= $wpdb->get_blog_prefix() . \'fxbase \';
$query .= \'WHERE code= \'.$code;
$data = $wpdb->get_row( $wpdb->prepare( $query ), ARRAY_A );
问题是上面的查询没有给出任何结果。只需在mysql中测试以下查询即可:

SELECT * FROM `1621_fxbase` WHERE `code` = \'EUR\'
我真的不知道这里的问题是什么。

2 个回复
最合适的回答,由SO网友:Otto 整理而成

该代码中的具体问题是缺少$代码周围的引号。

$query .= \'WHERE code= \'.$code;

应为:

$query .= \'WHERE code= "\'.$code.\'"\';

从长远来看,您确实应该正确使用prepare(),但这是您发布的代码的具体问题。

SO网友:kaiser

prepare() 无需准备的正确方法:默认对象$wpdb (翻个底朝天看看有什么)

核心中内置的所有内容:表名、“字段”、行和;列名其他所有内容must 做好准备。这不仅是用户输入,还包括自定义表、“字段”、行和;列名。

经验法则:尽可能晚地准备,在准备和查询之间不要有任何隔阂(如果可能的话)。

您只能准备两件事:

  • %s = 字符串%d = 数字示例如下:

    // functions.php
    function wpse73348_custom_table_query_test( $dump = false )
    {
        global $wpdb;
        $wpdb->flush();
        $result = $wpdb->query( $wpdb->prepare(
             "
                SELECT * FROM %s
                WHERE `code` = %s
             "
            ,$wpdb->get_blog_prefix().\'fxbase \'
            ,$code
        ), ARRAY_A );
        0 >= $wpdb->num_rows AND $result = \'No result from query\';
    
        if ( ! $dump )
            return $result;
    
        // Debug result
        echo \'<pre>\'.var_export( $result, true )
             "\\n Addt. Info: \\n".var_export( $wpdb->last_result, true ).var_export( $wpdb->last_query, true ).var_export( $wpdb->col_info, true ).\'</pre>\';
    }
    
    // In some template.php
    wpse73348_custom_table_query_test( true );
    

结束

相关推荐

$wpdb:计算与3个不同分类中的3个术语对应的帖子

如果我举个例子就更容易了:我有一个自定义的帖子类型MYPOSTTYPE, 有3种分类法TAX_1, TAX_2 和TAX_3如果我有3个术语:“TERM\\u TAX\\u 1”TAX_1, \'TERM\\u TAX\\u 2\'英寸TAX_2, 和中的“TERM\\u TAX\\u 3”TAX_3, 我如何计算有多少MYPOSTTYPE具有SQL查询和$wpdb的所有3个术语?我试过这样的东西,但没用。。。计数器始终为0SELECT COUNT($wpdb->posts.ID) AS count