Nếu bạn không thể thay đổi ký hiệu thập phân của hệ điều hành của mình (hoặc đơn giản là bạn không muốn), giải pháp duy nhất cho vấn đề này là tránh các tham số float. Bạn phải nhập giá trị trực tiếp vào sql. lưu ý sử dụng en_US làm ngôn ngữ cho dấu phân tách thập phân chính xác.
// 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);
}