我正在尝试将我之前的代码重新设计为插件,但我遇到了一些问题。当我尝试使用以下代码创建表时。该表未创建。我试图调试,但没有错误: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服务器。
答案 0 :(得分:0)
尝试替换
$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()函数是否存在问题。