0 收藏 0 点赞 578 浏览 2158 个字

今天在给一个客户做定制的时候需要在wordpress里面新建一个数据表,实在是不想看源码直接上某搜索引擎搜了下”wordpress新建数据表“,排除csdn和某”it1352“这种辣鸡网站后,搜出来的结果还是大同小异,大部分都是抄的”我爱水煮鱼“的一篇文章

然后我就直接复制水煮鱼的代码,测试后发现新建数表并不成功。综合参照其他搜索结果也一样的不成功。

只能放弃面向搜索引擎写代码的习惯,去看了下wp新建数据表的源码,在”wp-admin/includes/schema.php“文件里面。

对照了看下觉得是不是数据库的字符集问题?

水煮鱼的代码如下:

function weixin_robot_texts_crate_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . "weixin_robot_texts";
    if($wpdb->get_var("show tables like '$table_name'") != $weixin_robot_texts_table) {
        $sql = "CREATE TABLE " . $table_name . " (
              `id` bigint(20) NOT NULL AUTO_INCREMENT,
              `keyword` varchar(255) CHARACTER SET utf8 NOT NULL,
              `reply` text CHARACTER SET utf8 NOT NULL,
              `status` int(1) NOT NULL DEFAULT '1',
              `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
              PRIMARY KEY (`id`),
              UNIQUE KEY `keyword` (`keyword`)
            ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
        ";
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}}
register_activation_hook( __FILE__,'weixin_robot_texts_crate_table');

他这个字符集是直接写死的,wp源码里面是这么写的:

$charset_collate = $wpdb->get_charset_collate();

然后我把代码改了下:

function my_table_crate_table() {
    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();
    $table_name = $wpdb->prefix . "my_table_name";
    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
        $sql = "CREATE TABLE " . $table_name . " (
              `id` bigint(20) NOT NULL AUTO_INCREMENT,
              `keyword` varchar(255) CHARACTER SET utf8 NOT NULL,
              `reply` text CHARACTER SET utf8 NOT NULL,
              `status` int(1) NOT NULL DEFAULT '1',
              `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
               PRIMARY KEY (`id`),
              UNIQUE KEY `keyword` (`keyword`)
            ) '.$charset_collate.';
        ";
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}}
register_activation_hook(__FILE__, 'my_table_crate_table');

果然就成功了呢...

PS:结尾还是要吐槽下搜索引擎的结果,csdn这种毒瘤就不谈了,阿里云腾讯云关键词造出一堆关联类型的辣鸡页面出来更没有节操。还有大部分的网站都是复制粘贴完事。更奇葩的是it1352这种内容辣鸡就算了,浏览辣鸡还要关注他们的辣鸡公众号,真是一堆造粪机

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.mizhanw.com/blog/file/2405.html

相关推荐
最佳WordPress安全插件推荐清单
仅最初的网站投资就足以从一开始就保护您的网站。黑客、恶意软件、后门攻击和SEO垃圾邮件只是等待利用您的服务器、访问者数据和网站基础设施的挥之…
日期:2023-05-26 点赞:0 阅读:462
WordPress网站安全管理防火墙插件 – All In One WP Security & Firewall
WordPress网站安全管理防火墙插件 – All In One WP Security & Firewall 是一款非常优秀的W…
日期:2023-05-26 点赞:0 阅读:605
WordPress网站搬家与换域名详细教程
WordPress网站搬家是WP站长都会遇到的问题,wordpress怎么搬家对于新手而言可能是一头雾水,不知道该做哪些,网上找到的相关教程…
日期:2023-05-25 点赞:0 阅读:1,661
wordpress文章页获取作者的标签,the_author(); 不显示怎么办?
wordpress里面可自定义的东西太多了,没有一个统一的标准,wordpress版本有多,版本之间的调用方法又有差异,你在网上搜到的教程可…
日期:2023-05-23 点赞:0 阅读:355
wordpress安装教程 每一个步骤都带图示例
wordpress的安装还是比较简单的,本文来用一步骤一图的比较直观的方式来给大家介绍wordpress安装步骤。 首先要先下载wordpr…
日期:2023-05-23 点赞:0 阅读:567
wordpress调用指定ID文章的代码
在折腾wordpress模板的时候遇到“调用指定ID文章”的需求,折腾一番成功后分享下: 上面这段代码中的“$options['theme_…
日期:2023-05-23 点赞:0 阅读:136
发表评论
暂无评论

还没有评论呢,快来抢沙发~