wpdb::replace( string $table, array $data, array|string $format = null ): int|false
Replaces a row in the table.
Description
Examples:
wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 'bar' ) )
wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) )
See also
- wpdb::prepare()
- wpdb::$field_types
- wp_set_wpdb_vars()
Parameters
-
$table
string Required -
Table name.
-
$data
array Required -
Data to insert (in column => value pairs).
Both $data columns and $data values should be "raw" (neither should be SQL escaped).
Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case. -
$format
array|string Optional -
An array of formats to be mapped to each of the value in $data.
If string, that format will be used for all of the values in $data.
A format is one of'%d'
,'%f'
,'%s'
(integer, float, string).
If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.Default:
null
Return
int|false The number of rows affected, or false on error.
Source
File: wp-includes/class-wpdb.php
.
View all references
public function replace( $table, $data, $format = null ) {
return $this->_insert_replace_helper( $table, $data, $format, 'REPLACE' );
}
Changelog
Version | Description |
---|---|
3.0.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
The codex states
“This method returns a count to indicate the number of rows affected. This is the sum of the rows deleted and inserted. If the count is 1 for a single-row REPLACE, a row was inserted and no rows were deleted. If the count is greater than 1, one or more old rows were deleted before the new row was inserted.”
In MySQL databases however…
“It is possible that in the case of a duplicate-key error, a storage engine may perform the REPLACE as an update rather than a delete plus insert, but the semantics are the same.”
In this case 1 will be returned where 2 is expected.
REPLACE internally performs a delete and then an insert. This can cause problems if you have a foreign key constraint pointing at that row.
Using INSERT … ON DUPLICATE KEY UPDATE avoids this problem and is therefore prefered.
Replace Into involves:
1.Try insert on the table
2. If 1 fails, delete row and insert new row
Insert on Duplicate Key Update involves:
1.Try insert on table
2.If 1 fails, update row
Insert on Duplicate Key update is faster usually…