通过静态页面代码创建新数据库

时间:2014-01-06 作者:vani

我想通过创建静态页面在word press的当前数据库中创建一个新表。我为此编写了如下代码,但没有结果。为什么会这样,我如何才能做到这一点?

<?php
/*
Template Name:Register Page
Template URI:
Author:yuva
Author URI:
Description:This Is Page for Gallery.
*/

get_header();
?>
<div class="regist">
<h2><?php  the_title(); ?></h2>

<?php
global $wpdb;
$my_table=$wpdb->prefix.\'your_users\';

$sql="CREATE TABLE IF NOT EXISTS $my_table (id int(20) not null auto_increment,name varchar(40) not null,password varchar(20) notnull,PRIMARY KEY(id))";

include_once(ABSPATH.\'wp-admin/includes/upgrade.php\');

dbDelta($sql);

?>
</div>
<?php
get_footer();
?>

1 个回复
SO网友:s_ha_dum

DBDelta is extremely picky-- 有时甚至会让人发疯。抄本:

您必须在SQL语句中将每个字段放在自己的行上必须使用关键字key而不是其同义词索引,并且必须至少包含一个关键字

$sql="
  CREATE TABLE $my_table (
    id int(20) not null auto_increment,
    name varchar(40) not null,
    password varchar(20) notnull,
    PRIMARY KEY  id
  );";
我删除了IF NOT EXISTS. dbdelta 如果表需要更新,将更新表,否则将不进行更新,因此命名为“数据库增量”。在数学中,“delta”(希腊字母)的意思类似于“变化”或“差异”。

正如我所说的,我不保证代码会起作用,dbdelta 非常挑剔。我确信,SQL语句的格式才是问题所在,应该让您朝着正确的方向前进。

结束

相关推荐

PHP致命错误-$wpdb是否是非对象?

我在Wordpress 3.6.1和Buddypress的多站点中遇到了许多致命错误:PHP Fatal error: Call to a member function suppress_errors() on a non-object in /myblog/wproot/wp-includes/option.php on line 143引用的非对象是全局值$wpdb,行中为:$suppress = $wpdb->suppress_errors();函数中的wp_load_allop