ALTER TABLE和USING AFTER的正确PREPARE语句

时间:2015-12-21 作者:LPH

我的代码ALTER TABLE 不使用prepare() 方法$wpdb 因此,需要正确更新代码。查询的例子很多SELECT, 等,但找不到ALTER TABLE SQL中包含多个选项。

这是旧代码。

$post_qry = $wpdb->get_row( "SELECT * FROM $wpdb->posts" );

if ( ! isset( $post_qry->forum_id ) ) {
    $wpdb->query( "ALTER TABLE {$wpdb->posts} ADD `forum_id` INT( 10 )
        UNSIGNED NOT NULL DEFAULT \'0\' AFTER `ID` " );
}
这是我第一次尝试,但有些地方不适合添加。

if ( ! isset( $post_qry->forum_id ) ) {
    $wpdb->query( $wpdb->prepare( "ALTER TABLE {$wpdb->posts} ADD col= %s INT( 10 )
        UNSIGNED NOT NULL DEFAULT \'0\' AFTER col = %s ", \'forum_id\', \'ID\' ) );
}
首先,使用是否合适ADD col = 或者是ADD COLUMN=%s ?

第二,在后面陈述同样正确col=%s?

第三,应该INTUNSIGNED 用作%s 而且

感谢您抽出时间解释,并指出good resource.

1 个回复
SO网友:LPH

这个问题的答案实际上来自于@TomJNowell。不要使用MySQL调用,而是使用WordPress中包含的本机函数:

update_post_meta ( $post->ID , \'forum_id\', $thread_id );
其中forum_id 是钥匙和$thread_id 是值。我试过了add_post_meta 但这造成了重复。

检索元数据

$thread_id = get_post_custom_values( \'thread_id\', $post->ID);

现在,我正在寻找添加到评论元的方法。希望这能帮助其他人。