Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

php oci_bind_by_name mengapung ke numerik

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ketergantungan Maven tidak diselesaikan di Eclipse

  2. Akses kursor dengan nama kolom secara dinamis

  3. Urutan Oracle PL/SQL tidak bertambah seperti yang diharapkan dengan konstruktor objek

  4. Bagaimana cara menggunakan GROUP BY pada kolom CLOB dengan Oracle?

  5. hubungkan dengan klausa di regex_substr