Wordpress db prepare

时间:2012-06-12 作者:handicop

我并没有试图使用$wpdb->插入,而是准备。

Insert方法将有一个查询字符串和一个数组,其中包含#个未定义但将为每个查询字符串关键字定义的数据。

例如,“address.insert”查询字符串在处理查询时定义了一个包含3个变量的查询字符串,如owner\\u id、address\\u info、city。

而不是使用$owner\\u id$在$wpdb->prepare部分,我试图传递一个数组,该数组包含下面列出的所有变量。

有人知道通过数组进行准备是否可行吗?当我尝试时,它对我不起作用。

作品

$sql = $wpdb->prepare($this->queryArray[$selectQuery], $owner_id, $address1, $address2, $city, $zip, $country);
正在尝试执行

$sql = $wpdb->prepare($this->queryArray[$selectQuery], $inputArray);
下面是一个示例代码。

public function Insert($selectQuery, $inputArray)
{
    try
    {
        global $wpdb;
        $wpdb->show_errors();
        $sql = $wpdb->prepare($this->queryArray[$selectQuery], $owner_id, $address1, $address2, $city, $zip, $country);
        $result = $wpdb->query($sql);
        return $result;
    }
    catch(Exception $e)
    {
        echo $e->getMessage();
        return -1;
    }
}
解决方法:这很好用。

$sql = $wpdb->prepare($this->queryArray[$selectQuery], $inputArray);

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

Codex, prepare()方法的第二个参数:

(int | string | array)要替换为占位符的值。通过以类似sprintf()的方式传递更多参数,可以传递许多值。Alternatively the second argument can be an array containing the values as in PHP\'s vsprintf() function. 必须注意不要允许用户直接输入此参数,这将允许使用多个占位符对任何查询进行数组操作。值不能已被SQL转义。

因此,只要查询字符串中的“%s”占位符数与数组长度相同,就可以直接传递输入数组。

顺便说一句,在您的代码中$owner_id, $address1, $address2, $city, $zip, $country 变量未定义。你错过了吗extract($inputArray) ?

结束

相关推荐

使用wpdb类获取审阅值

我正在使用PHP为一个网站生成一个XML文件,他们在该网站上查看技术产品。在XML文件中,我必须显示产品的评级。出于评级目的,我使用GD Star rating插件。我一直在尝试使用wpdb类来获取每个产品的评级。然而,到目前为止,我还没有任何运气。我在phpmyadmin上使用以下SQL代码,并且我能够获取我想要的任何产品评论的评级SELECT review FROM tableName_gdsr_data_article WHERE post_id = 4627 但当我在PHP中尝试这段SQ