Title: wpdb::set_prefix
Published: April 25, 2014
Last modified: February 24, 2026

---

# wpdb::set_prefix( string $prefix, bool $set_table_names = true ): string|󠀁[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)󠁿

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#wp--skip-link--target)

Sets the table prefix for the WordPress tables.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#parameters)󠁿

 `$prefix`stringrequired

Alphanumeric name for the new prefix.

`$set_table_names`booloptional

Whether the table names, e.g. wpdb::$posts, should be updated or not.

Default:`true`

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#return)󠁿

 string|[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/) 
Old prefix or [WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)
on error.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#source)󠁿

    ```php
    public function set_prefix( $prefix, $set_table_names = true ) {

    	if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) {
    		return new WP_Error( 'invalid_db_prefix', 'Invalid database prefix' );
    	}

    	$old_prefix = is_multisite() ? '' : $prefix;

    	if ( isset( $this->base_prefix ) ) {
    		$old_prefix = $this->base_prefix;
    	}

    	$this->base_prefix = $prefix;

    	if ( $set_table_names ) {
    		foreach ( $this->tables( 'global' ) as $table => $prefixed_table ) {
    			$this->$table = $prefixed_table;
    		}

    		if ( is_multisite() && empty( $this->blogid ) ) {
    			return $old_prefix;
    		}

    		$this->prefix = $this->get_blog_prefix();

    		foreach ( $this->tables( 'blog' ) as $table => $prefixed_table ) {
    			$this->$table = $prefixed_table;
    		}

    		foreach ( $this->tables( 'old' ) as $table => $prefixed_table ) {
    			$this->$table = $prefixed_table;
    		}
    	}
    	return $old_prefix;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wpdb.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/class-wpdb.php#L1004)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/class-wpdb.php#L1004-L1038)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#related)󠁿

| Uses | Description | 
| [wpdb::tables()](https://developer.wordpress.org/reference/classes/wpdb/tables/)`wp-includes/class-wpdb.php` |

Returns an array of WordPress tables.

  | 
| [wpdb::get_blog_prefix()](https://developer.wordpress.org/reference/classes/wpdb/get_blog_prefix/)`wp-includes/class-wpdb.php` |

Gets blog prefix.

  | 
| [is_multisite()](https://developer.wordpress.org/reference/functions/is_multisite/)`wp-includes/load.php` |

Determines whether Multisite is enabled.

  | 
| [WP_Error::__construct()](https://developer.wordpress.org/reference/classes/wp_error/__construct/)`wp-includes/class-wp-error.php` |

Initializes the error.

  |

[Show 2 more](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#)

| Used by | Description | 
| [wp_set_wpdb_vars()](https://developer.wordpress.org/reference/functions/wp_set_wpdb_vars/)`wp-includes/load.php` |

Sets the database table prefix and the format specifiers for database table columns.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wpdb/set_prefix/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.5.0](https://developer.wordpress.org/reference/since/2.5.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwpdb%2Fset_prefix%2F)
before being able to contribute a note or feedback.