【问题标题】:Creating table for wordpress plugin not being created为未创建的 wordpress 插件创建表
【发布时间】:2015-01-21 22:13:15
【问题描述】:

我正在尝试将以前的代码重新设计为插件,但遇到了一些问题。当我尝试使用以下代码创建表时。未创建表。我尝试调试,但没有收到任何错误:S

如果您可以查看代码,请不胜感激。我还有一个问题。创建表后,我需要通过 csv 文件填充它。你们知道如何解决这个问题,因为我不知道从哪里开始。

再次感谢

function upper_table(){
global $wpdb;
$table_name = $wpdb->prefix . "upper_winds";
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name){
$sql = "CREATE TABLE $table_name ( 
`LVL` VARCHAR(4) NOT NULL, 
`REGION` TEXT NOT NULL, 
`VALID` INT NOT NULL, 
`CURRENT` TEXT NOT NULL 
);";
//reference to upgrade.php file
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

} }

此代码位于函数 php 文件中,并通过主插件调用

include ("functions_wx.php");
register_activation_hook(__FILE__,'upper_table');

上面的 sql 查询已经直接通过 PHPmyAdmin 并且工作正常。不知道这是否有问题,但我目前正在通过 WAMP 服务器运行。

【问题讨论】:

    标签: csv import wordpress create-table


    【解决方案1】:

    尝试替换

     $sql = "CREATE TABLE $table_name ( 
    `LVL` VARCHAR(4) NOT NULL, 
    `REGION` TEXT NOT NULL, 
    `VALID` INT NOT NULL, 
    `CURRENT` TEXT NOT NULL 
    );";
    

     $sql = "CREATE TABLE ".$table_name." ( 
    `LVL` VARCHAR(4) NOT NULL, 
    `REGION` TEXT NOT NULL, 
    `VALID` INT NOT NULL, 
    `CURRENT` TEXT NOT NULL 
    );";
    

    (注意表格名称周围的引号和点)

    如果这不起作用,您可以通过 var 转储变量 $table_name 进行调试,以确保它包含有效的字符串:

    var_dump($table_name);
    

    如果是,则尝试将 dbDelta() 函数的返回值存储在一个变量中,而不是仅仅调用该函数,如下所示:$result = dbDelta( $sql );

    然后 var_dump 结果如下:var_dump($result);

    这样您就可以开始了解问题出在代码中的什么位置,以及是您的语法/变量还是您使用的 dbDelta() 函数的问题。

    【讨论】:

    • 谢谢。发现问题出在激活钩子调用的时候。
    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2013-02-21
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多