web-dev-qa-db-fra.com

Le crochet d'activation ne crée pas de table

Pour une raison quelconque, mon crochet d’activation ne crée pas de nouvelle table de base de données.

Code:

function mm_booking_activate() {
    global $wpdb;
    $mm_booking_table_name = $wpdb->prefix . "mm_booking";
    $mm_booking_db_version = '1.0';
    $charset_collate = $wpdb->get_charset_collate();

    if ( $wpdb->get_var( 'SHOW TABLES LIKE ' . $mm_booking_table_name ) != $mm_booking_table_name ) {
        $sql = "CREATE TABLE $mm_booking_table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            first_name varchar(255),
            last_name varchar(255),
            address varchar(255),
            lat decimal(10, 8) NOT NULL,
            lng decimal(11, 8) NOT NULL,
            field enum('option1', 'option2', 'option3'),
            phone_number varchar(255),
            email varchar(255),
            date_time_from datetime DEFAULT CURRENT_TIMESTAMP,
            date_time_to datetime DEFAULT CURRENT_TIMESTAMP,
      status enum('pending', 'approved', 'rejected') DEFAULT 'pending',
      modification_time datetime ON UPDATE CURRENT_TIMESTAMP,
      creation_time datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY  (id)
    ) $charset_collate;";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
        add_option( 'mm_booking_db_version', $mm_booking_db_version );
    }
}
register_activation_hook( __FILE__, 'mm_booking_activate' );
1
Milos

Le nom de la table doit figurer entre guillemets sur la ligne sur laquelle vous vérifiez son existence. Je l'ai testé, et après que cela ait été corrigé, la table a été créée avec succès. Voici le code complet:

function mm_booking_activate() {
    global $wpdb;
    $mm_booking_table_name = $wpdb->prefix . "mm_booking";
    $mm_booking_db_version = '1.0';
    $charset_collate = $wpdb->get_charset_collate();

    if ( $wpdb->get_var( "SHOW TABLES LIKE '{$mm_booking_table_name}'" ) != $mm_booking_table_name ) {
        $sql = "CREATE TABLE $mm_booking_table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            first_name varchar(255),
            last_name varchar(255),
            address varchar(255),
            lat decimal(10, 8) NOT NULL,
            lng decimal(11, 8) NOT NULL,
            field enum('option1', 'option2', 'option3'),
            phone_number varchar(255),
            email varchar(255),
            date_time_from datetime DEFAULT CURRENT_TIMESTAMP,
            date_time_to datetime DEFAULT CURRENT_TIMESTAMP,
      status enum('pending', 'approved', 'rejected') DEFAULT 'pending',
      modification_time datetime ON UPDATE CURRENT_TIMESTAMP,
      creation_time datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY  (id)
    ) $charset_collate;";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
        add_option( 'mm_booking_db_version', $mm_booking_db_version );
    }
}
register_activation_hook( __FILE__, 'mm_booking_activate' );
1
Dave Romsey