0

我正在构建一个 wordpress 插件,当调用一个函数时,它将在数据库中创建一个表。

我有以下代码:

        function student_custom_data()
    {
        
        #create custom table if not exist
        
        $sql ="CREATE TABLE IF NOT EXISTS Wick_Custom_Student_Data) (
            id INT(6) NOT NULL AUTO_INCREMENT,
            user_id INT(6) NOT NULL,
            target INT(6) NOT NULL,
            sen VARCHAR(10) NOT NULL,
            disAd VARCHAR (10) NOT NULL,
            PRIMARY KEY  (id)
        )"; }

调用该函数时,不会创建该表。数据库中不存在已调用Wick_Custom_Student_Data的表。

为什么没有创建数据库表?

4

1 回答 1

0

好的,所以我意识到对于 wordpress,我需要获取 charset_collat​​e 属性并将其设置为 create table 语句,并使用 dbDelta 正确执行 SQL:

        global $wpdb;
        $charset_collate = $wpdb->get_charset_collate();
        
        $sql ="CREATE TABLE IF NOT EXISTS Wick_Custom_Student_Data (
            id INT(6) NOT NULL AUTO_INCREMENT,
            user_id INT(6) NOT NULL,
            target INT(6) NOT NULL,
            sen VARCHAR(10) NOT NULL,
            disAd VARCHAR (10) NOT NULL,
            PRIMARY KEY  (id)
        ) $charset_collate;";
        
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
于 2020-07-15T19:04:41.960 回答