这个dbDelta语法有什么问题?

时间:2014-01-22 作者:Justin Folvarcik

我知道这方面有一百万个问题,但我已经搜索了很多,没有找到任何解决问题的方法。

这是我在插件激活时挂接的功能:

global $wpdb;
$src = $wpdb->prefix . "source";
$via = $wpdb->prefix . "via";
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
$query = "CREATE TABLE " . $src . "(
        source_index bigint NOT NULL AUTO_INCREMENT,
                    post_id bigint,
                    source_id int,
                    source varchar(100),
                    source_title varchar(100),
                    PRIMARY KEY  (source_index)
            );";
    dbDelta($query);
$query = "CREATE TABLE " . $via . "(
        via_index bigint NOT NULL AUTO_INCREMENT,
                    post_id bigint,
                    via_id int,
                    via varchar(100),
                    via_title varchar(100),
                    PRIMARY KEY  (via_index)
            );";
    dbDelta($query);
它一点作用也没有,我不明白为什么。我确信我已经纠正了所有的问题。

如有任何帮助,将不胜感激。

1 个回复
SO网友:Otto

这个dbDelta 函数为super 挑剔。一切都必须完全正确。

在这种情况下,表名和其后括号之间缺少空格将导致调用失败,因为没有该空格它无法计算出表名。

中的相关代码dbDelta() 这是:

if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {

它正在寻找CREATE TABLE,后跟一个空格,后跟一些不包含空格的文本。因此,表名和打开的父项之间的结束空间不是可选的。

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x