我知道这方面有一百万个问题,但我已经搜索了很多,没有找到任何解决问题的方法。
这是我在插件激活时挂接的功能:
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);
它一点作用也没有,我不明白为什么。我确信我已经纠正了所有的问题。
如有任何帮助,将不胜感激。
SO网友:Otto
这个dbDelta
函数为super 挑剔。一切都必须完全正确。
在这种情况下,表名和其后括号之间缺少空格将导致调用失败,因为没有该空格它无法计算出表名。
中的相关代码dbDelta()
这是:
if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {
它正在寻找CREATE TABLE,后跟一个空格,后跟一些不包含空格的文本。因此,表名和打开的父项之间的结束空间不是可选的。