用于创建带有插件的表格的WordPress代码


Wordpress codex for creating tables with plugins?

所以它说我必须在主键之间放一个双倍空格。这是否意味着我必须在 PRIMARYKEY 之间放置一个双倍空格。另外,将其放在主键的定义之间意味着什么?谢谢!

  • 您必须在 SQL 语句中将每个字段放在其自己的行上。
  • 单词 PRIMARY KEY 和主键的定义之间必须有两个空格。
  • 必须使用关键字 KEY 而不是其同义词 INDEX,并且必须至少包含一个 KEY。
  • 不得在字段名称周围使用任何撇号或反引号。
  • 字段类型必须全部小写
  • SQL 关键字(如 CREATE TABLE 和 UPDATE)必须为大写。

global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
  id mediumint(9) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  name tinytext NOT NULL,
  text text NOT NULL,
  url varchar(55) DEFAULT '' NOT NULL,
  UNIQUE KEY id (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

这是一个很好的问题,不,主键之间不需要额外的空格。dbDelta() 函数对于用作参数的 SQL 语句可能不稳定,因此不要像往常一样使用 PRIMARY KEY 声明。先声明主键(主键),然后声明定义(id)。应按如下方式添加主键:

global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
  id mediumint(9) NOT NULL AUTO_INCREMENT,
  time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  name tinytext NOT NULL,
  text text NOT NULL,
  url varchar(55) DEFAULT '' NOT NULL,
  PRIMARY KEY  (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );