Jika Anda tidak dapat mengubah simbol desimal OS Anda (atau Anda tidak ingin melakukannya), satu-satunya solusi untuk masalah ini adalah menghindari parameter float. Anda harus memasukkan nilainya langsung ke sql. Anda juga harus sadar untuk menggunakan en_US sebagai lokal untuk pemisah desimal yang benar.
// 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);
}