gpt4 book ai didi

php - 当 SQL 语法正确时,Wordpress dbDelta 函数不添加表

转载 作者:行者123 更新时间:2023-11-30 22:36:29 24 4
gpt4 key购买 nike

您好,我已经编写了一个添加表格的函数。我已经测试了我的语法,它在我的 phpmyadmin 中工作,但出于某种原因它没有在我的插件中激活? :S

class clients{
public static $version="1.0";
protected static function setup_tables(){
global$wpdb;
require_once(ABSPATH."/wp-admin/includes/upgrades.php");
dbDelta("CREATE TABLE ".$wpdb->prefix."hippie_clients (ID mediumint(9) NOT NULL AUTO_INCREMENT, email varchar(100) NOT NULL, password varchar(512), paid tinyint(1) NOT NULL DEFAULT 0, firstname varchar(50) NOT NULL, lastname varchar(70) NOT NULL,signup TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, free tinyint(1) DEFAULT 1,gender tinyint(1) NOT NULL, lastlog varchar(200), UNIQUE(email), PRIMARY KEY(ID))$wpdb->get_charset_collate();");
if(!isset($wpdb->clients))$wpdb->clients=$wpdb->prefix."hippie_clients";
add_option('Hippie_clients_version',self::$version);
}
//I'm using another class to manage my activation hooks etc but this is the basic idea
public static function setup(){
self::setup_tables();
}
public function run(){
register_activation_hook(__FILE__,(array('clients','setup'));
}
}
$clients=new clients();
$clients->run();

但是没有添加表格。我的表语法?还是我设置的方式?是 protected 关键字吗?

最佳答案

我遇到错误有几个原因。首先,register_activation_hooks() 是我遇到的一个棘手问题。它没有使用我的类结构(上面未显示)进行注册。

为了解决这个问题,我通过在插件的主文件中注册激活来快速修复。

第二个是 UNIQUE 和括号之间需要一个空格,PRIMARY KEY 和括号之间需要两个空格。

我还发现 $wpdb->get_charset_collat​​e() 导致了我的表创建错误,因此暂时将其删除。

关于php - 当 SQL 语法正确时,Wordpress dbDelta 函数不添加表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com