Why my query 'REPLACE INTO...' does not work?
To insert or update data if data exists, I was using 'REPLACE INTO...' in a var $query_string
like this :
dbDelta( $query_string );
For some reason, the row is not insert. Why ?
To insert or update data if data exists, I was using 'REPLACE INTO...' in a var $query_string
like this :
dbDelta( $query_string );
For some reason, the row is not insert. Why ?
The reason is due to this code inside dbDelta()
:
// Create a tablename index for an array ($cqueries) of queries.
foreach ( $queries as $qry ) {
if ( preg_match( '|CREATE TABLE ([^ ]*)|', $qry, $matches ) ) {
$cqueries[ trim( $matches[1], '`' ) ] = $qry;
$for_update[ $matches[1] ] = 'Created table ' . $matches[1];
} elseif ( preg_match( '|CREATE DATABASE ([^ ]*)|', $qry, $matches ) ) {
array_unshift( $cqueries, $qry );
} elseif ( preg_match( '|INSERT INTO ([^ ]*)|', $qry, $matches ) ) {
$iqueries[] = $qry;
} elseif ( preg_match( '|UPDATE ([^ ]*)|', $qry, $matches ) ) {
$iqueries[] = $qry;
} else {
// Unrecognized query type.
}
}
ths function dbDelta()
does not support 'REPLACE INTO' and that calls in the else
with // Unrecognized query type.
comment.
Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.