Oracle
 sql >> Baza danych >  >> RDS >> Oracle

php oci_bind_by_name zmiennoprzecinkowe na numeryczne

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);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak eksportować za pomocą DATA_PUMP do wiadra S3?

  2. Polecenie SQL nie zostało poprawnie zakończone?

  3. zapytanie Oracle wolno z REGEXP_SUBSTR(AGGREGATOR,'[^;]+',1,POZIOM)

  4. Dobra praktyka używania indeksów odwrotnych w kluczach zastępczych? (Wyrocznia)

  5. Składnia sprzężenia zewnętrznego Oracle