使用高级定制字段更新数据库

时间:2013-12-10 作者:chrisgrace

在自定义帖子类型中使用高级自定义字段更新数据库表时,我遇到了一个真正的问题。

我在数据库中有一个名为“wp\\u company\\u profiles”的表,其中包含“address\\u 1”和“address\\u 2”字段,并使用相同的值设置了两个高级自定义字段。我正在尝试创建一个钩子,当某个特定帖子更新时,该钩子将更新表字段。

下面是我正在使用的代码,但我不明白为什么它不起作用。

function update_company_profile($post_ID)  {
    global $wpdb;

    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    $address_1 = get_post_meta($post_ID, \'address_1\', true);
    $address_2 = get_post_meta($post_ID, \'address_2\', true);

    $sql = $wpdb->query("UPDATE wp_company_profiles SET
            address_1 = \'{$address_1}\',
            address_2 = \'{$address_2}\',
            WHERE pid = {$post_ID}");

    $wpdb->query($sql);
}

add_action(\'save_post\', \'update_company_profile\');

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

您将运行两次查询,并将第一个查询的结果传递给第二个查询。试试这个。您还可以考虑使用wpdb中的update函数,而不是运行任意查询,因为它看起来不像是在执行任何数据清理或nonce检查。如果确实要查询,应使用prepare。

function update_company_profile($post_ID)  {
    global $wpdb;

    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    $address_1 = get_post_meta($post_ID, \'address_1\', true);
    $address_2 = get_post_meta($post_ID, \'address_2\', true);

    $sql = $wpdb->prepare("UPDATE wp_company_profiles SET
            address_1 = \'%s\',
            address_2 = \'%s\',
            WHERE pid = %d", $address_1, $address_2, $post_ID);

    $wpdb->query($sql);
}

add_action(\'save_post\', \'update_company_profile\');

结束

相关推荐

使用高级定制字段更新数据库 - 小码农CODE - 行之有效找到问题解决它

使用高级定制字段更新数据库

时间:2013-12-10 作者:chrisgrace

在自定义帖子类型中使用高级自定义字段更新数据库表时,我遇到了一个真正的问题。

我在数据库中有一个名为“wp\\u company\\u profiles”的表,其中包含“address\\u 1”和“address\\u 2”字段,并使用相同的值设置了两个高级自定义字段。我正在尝试创建一个钩子,当某个特定帖子更新时,该钩子将更新表字段。

下面是我正在使用的代码,但我不明白为什么它不起作用。

function update_company_profile($post_ID)  {
    global $wpdb;

    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    $address_1 = get_post_meta($post_ID, \'address_1\', true);
    $address_2 = get_post_meta($post_ID, \'address_2\', true);

    $sql = $wpdb->query("UPDATE wp_company_profiles SET
            address_1 = \'{$address_1}\',
            address_2 = \'{$address_2}\',
            WHERE pid = {$post_ID}");

    $wpdb->query($sql);
}

add_action(\'save_post\', \'update_company_profile\');

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

您将运行两次查询,并将第一个查询的结果传递给第二个查询。试试这个。您还可以考虑使用wpdb中的update函数,而不是运行任意查询,因为它看起来不像是在执行任何数据清理或nonce检查。如果确实要查询,应使用prepare。

function update_company_profile($post_ID)  {
    global $wpdb;

    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    $address_1 = get_post_meta($post_ID, \'address_1\', true);
    $address_2 = get_post_meta($post_ID, \'address_2\', true);

    $sql = $wpdb->prepare("UPDATE wp_company_profiles SET
            address_1 = \'%s\',
            address_2 = \'%s\',
            WHERE pid = %d", $address_1, $address_2, $post_ID);

    $wpdb->query($sql);
}

add_action(\'save_post\', \'update_company_profile\');

相关推荐