$wpdb->WordPress 3.5中的Prepare()警告

时间:2012-12-14 作者:Emerson Maningo

尝试运行数据库查询时收到此警告:

Warning: wpdb::prepare()缺少参数2

有问题的查询是:

$result = $wpdb->get_var(
    $wpdb->prepare(
        "SELECT DISTINCT meta_value FROM $metatable
        WHERE meta_key LIKE \'%matchme%\'
        AND meta_value IS NOT NULL
        AND meta_value <> \'\'" 
    )
);
有没有办法通过修改上述查询来删除错误?

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

删除对的呼叫$wpdb->prepare():

$result = $wpdb->get_var(
    "SELECT DISTINCT meta_value FROM $metatable
    WHERE meta_key LIKE \'%matchme%\'
    AND meta_value IS NOT NULL
    AND meta_value <> \'\'"
);
在这种情况下$wpdb->prepare() 函数为not doing anything. 没有包含未知值的变量,因此无需对其进行清理。

如果确实有需要清理的变量,可以向函数添加第二个参数:

$result = $wpdb->get_var(
    $wpdb->prepare(
        "SELECT DISTINCT meta_value FROM %s
        WHERE meta_key LIKE \'%matchme%\'
        AND meta_value IS NOT NULL
        AND meta_value <> \'\'",
    $metatable )
);

Relevant links:

结束

相关推荐

Foreach循环中的wpdb只返回第一个结果-发现了其他两个类似的情况

@Milo问题已解决,在数组$arrname中找到了空格。我试图使用post\\u name获取post id。首先,我将所有post\\u名称存储在一个数组中,然后在该数组中循环使用wpdb查询中的key变量来获取post id,虽然很奇怪,但它只返回第一个post id。如您所见,我尝试输出数组,它工作正常,输出该数组中的每个键值,但wpdb查询只返回第一个结果(尝试切换数组中键值的顺序,确认它只输出第一个结果)。有什么想法吗?global $wpdb; $rawname=$_POST[\'i