﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
21045	wpdb update() fails to write float values when non-english locale is enabled	Alexis2004		"When I set non-English locale in wp-config.php:

{{{
setlocale(LC_ALL, array('ru_RU.utf8', 'rus'));
}}}

and trying to update float column view via $wpdb->update() method:

{{{
$wpdb->update(
    ...,
    array(
        'float_column' => 0.5
    ),
    ...,
    array(
        '%f'
    ),
    ...
);
}}}

the query is silently failed to execute.

The reason of it is that Russian language has different floating point separator (comma instead of point) and sprintf() function formats query using this locale settings. But comma is not valid floating point separator to MySQL database engine.

In my opinion there are 2 different method to solve this problem:

1) Save current locale before generating query, revert it to default English locale, make query and then revert saved locale back.

2) Treat %f formatting directive as %F (non-locale aware version of %f) -- just do replace in $wpdb->update() method. There is no reasonable cause to use %f instead of %F in SQL formatting, but a lot of plugins still use %f as format modifier and it's easier to make change to core instead of contacting each plugins author.

"	defect (bug)	closed	normal		Database	3.4	normal	duplicate		knut@…
