Jeśli nie możesz zmienić symbolu dziesiętnego swojego systemu operacyjnego (lub po prostu nie chcesz), jedynym rozwiązaniem tego problemu jest unikanie parametrów zmiennoprzecinkowych. Musisz wprowadzić wartość bezpośrednio do sql. świadomy używania en_US jako lokalizacji dla prawidłowego separatora dziesiętnego.
// Ensure that the period is used as decimal separator when converting float to string
setlocale(LC_ALL, 'en_US');
// Generate SQL
// ...
$variables = array();
if(is_int($myValue))
{
$sql .= ':MYVALUE';
$variables[':MYVALUE'] = $myValue;
}
else if(is_float($myValue))
{
$sql .= (string) $myValue;
}
// ...
// Generate statement
// $resource = oci_parse(...);
// Bind parameters (if neccessary)
if(count($variables) > 0)
{
foreach($variables as $name => &$variable)
oci_bind_by_name($resource, $name, $variable);
}