wordpress - 安装时创建数据库表并插入不起作用 - wordpress 插件
问题描述
我创建了一个函数,它在激活时在 Wordpress 数据库中创建表。我已经检查过只有这个函数在激活时会产生意外的输出错误。同样奇怪的是代码只创建和填充第一个表。但是当我删除创建第一个表的部分代码时,下面的sql查询不生效。我阅读了互联网上所有相关的帖子,但没有找到解决方案。谁能帮我吗?
function prtxgal_install(){
global $wpdb;
$prtx_getsettings = $wpdb->get_row( "SELECT * FROM " . $wpdb->prefix . "prtxgal_settings WHERE id = 1;" );
if ($prtx_getsettings == NULL) {
$table_name = $wpdb->prefix . "prtxgal_settings";
$table_name2 = $wpdb->prefix . "prtxgal_galleries";
$table_name3 = $wpdb->prefix . "prtxgal_images";
$charset_collate = $wpdb->get_charset_collate();
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
outline_color text NOT NULL,
desc_bg_color text NOT NULL,
font_color text NOT NULL,
file_path text NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql );
$sql = "CREATE TABLE $table_name2 (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
name text NOT NULL,
preview_image text NOT NULL,
image_number text NOT NULL,
order int(10) NOT NULL,
published int(2) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql );
$sql = "CREATE TABLE $table_name3 (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
gallery_id text NOT NULL,
filename text NOT NULL,
image_url text NOT NULL,
thumb_url text NOT NULL,
description text NOT NULL,
alt text NOT NULL,
order int(10) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql );
$wpdb->insert(
$table_name,
array(
'id' => 1,
'outline_color' => '#000000',
'desc_bg_color' => '#000000',
'font_color' => '#ffffff',
'file_path' => '/images/default.png'
)
);
}
解决方案
我最终得到了这个并且运行良好,非常感谢您的帮助。
function prtxgal_install(){
global $wpdb;
$table_name = $wpdb->prefix . "prtxgal_settings";
$table_name2 = $wpdb->prefix . "prtxgal_galleries";
$table_name3 = $wpdb->prefix . "prtxgal_images";
$charset_collate = $wpdb->get_charset_collate();
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
outline_color text NOT NULL,
desc_bg_color text NOT NULL,
font_color text NOT NULL,
file_path text NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql );
$sql = "CREATE TABLE IF NOT EXISTS $table_name2 (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
name text NOT NULL,
preview_image text NOT NULL,
image_count text NOT NULL,
gal_order int(10) NOT NULL,
published int(9) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql );
$sql = "CREATE TABLE IF NOT EXISTS $table_name3 (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
gallery_id text NOT NULL,
filename text NOT NULL,
image_url text NOT NULL,
thumb_url text NOT NULL,
description text NOT NULL,
alt text NOT NULL,
img_order int(10) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql );
$wpdb->insert(
$table_name,
array(
'id' => 1,
'outline_color' => '#000000',
'desc_bg_color' => '#000000',
'font_color' => '#ffffff',
'file_path' => '/images/default.png'
)
);
}
推荐阅读
- python - “view.py”中实例的变化不会反映在 Flask 的页面中
- excel - VBA - 根据另一个单元格的值填充单元格值(代码不起作用)
- javascript - 无法在单击按钮时使用 javascript 更新全局变量
- google-apps-script - 单击链接将光标移动到位置
- r - 在闪亮的r中隐藏一个情节
- sql - Oracle PL/SQL,在预期的地方找不到关键字
- c++ - 使编译器假定所有情况都在 switch 中处理,没有默认值
- javascript - 检测链表是否在 JS 中有循环
- wpf - 如何使数据绑定在 AdornerLayer 中的控件中工作?
- type-conversion - 使用 TraMineReextras 将 TSE 数据转换为 STS