【问题标题】:Wordpress codex for creating tables with plugins?用于使用插件创建表格的 Wordpress codex?
【发布时间】:2015-01-23 23:13:30
【问题描述】:

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

  • 您必须在 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 );

【问题讨论】:

    标签: php mysql wordpress plugins


    【解决方案1】:

    这是一个很好的问题,不,PRIMARY KEY 之间不需要额外的空格。 dbDelta() 函数可能会因为 SQL 语句作为参数而变得不稳定,因此不要像通常那样使用 PRIMARY KEY 声明。主键被声明(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 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 2013-05-20
      • 2021-12-18
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多