wpseek.com
A WordPress-centric search engine for devs and theme authors



maybe_add_column › WordPress Function

Since1.0.0
Deprecatedn/a
maybe_add_column ( $table_name, $column_name, $create_ddl )
Parameters: (3)
  • (string) $table_name Database table name.
    Required: Yes
  • (string) $column_name Table column name.
    Required: Yes
  • (string) $create_ddl SQL statement to add column.
    Required: Yes
Returns:
  • (bool) True on success or if the column already exists. False on failure.
Defined at:
Codex:

Adds column to database table, if it doesn't already exist.



Source

function maybe_add_column( $table_name, $column_name, $create_ddl ) {
		global $wpdb;

		// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names.
		foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) {
			if ( $column === $column_name ) {
				return true;
			}
		}

		// Didn't find it, so try to create it.
		// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- No applicable variables for this query.
		$wpdb->query( $create_ddl );

		// We cannot directly tell whether this succeeded!
		// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names.
		foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) {
			if ( $column === $column_name ) {
				return true;
			}
		}

		return false;
	}
endif;

/**
 * Drops column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $table_name  Database table name.
 * @param string $column_name Table column name.
 * @param string $drop_ddl    SQL statement to drop column.
 * @return bool True on success or if the column doesn't exist. False on failure.
 */