The sql_create() function is used to create an SQL table according to the schema provided.

It accepts 7 parameters:

  • $nom is the name of the table to create
  • $champs is an array of column descriptions
  • $clefs is an array of key descriptions
  • $autoinc: if a field is to be a primary key and is numeric, then the auto-increment property will be added. false by default.
  • $temporary: is this a temporary table? Default value: false
  • $serveur,
  • $option

It is used as shown below:

        "id_table" => "bigint(20) NOT NULL default '0'",
        "column1"=> "varchar(3) NOT NULL default 'oui'",
        "column2"=> "text NOT NULL default ''"
        'PRIMARY KEY' => "id_table",
        'KEY column1' => "column1"

As a general rule, plugins should declare their SQL tables using the pipelines intended for the purpose: declarer_tables_principales and declarer_tables_auxiliaires, and use the creer_base() or maj_tables('spip_tables') functions during installation of each plugin, which will call the sql_create() function when necessary. Read more on this topic here: "Table updates and installation".


Example of creating a "spip_mots_tordus" table which will be a link with "spip_tordus". Note that the primary key is composed from 2 columns:

        "id_mot" => "bigint(20) NOT NULL default '0'",
        "id_tordu"=> "bigint(20) NOT NULL default '0'"
        'PRIMARY KEY' => "id_tordu,id_mot"

Author Mark Baber Published : Updated : 02/06/10

Translations : English, français