sql >> Database teknologi >  >> RDS >> Oracle

php oci_bind_by_name flyder til numerisk

Hvis du ikke kan ændre decimalsymbolet for dit OS (eller du simpelthen ikke vil), er den eneste løsning på dette problem at undgå float-parametre. Du skal indtaste værdien direkte i sql. Du skal også være opmærksom på at bruge en_US som lokalitet for den korrekte decimalseparator.

// 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. MySql-fejl opstår natten over - Sidste pakke sendt til serveren var for 0 ms siden

  2. java.sql.SQLException:Feltet 'id' har ikke en standardværdi

  3. SQL Server:Sådan udføres Rtrim på alle varchar-kolonner i en tabel

  4. PostgreSQL Tutorial for begyndere – Alt du behøver at vide om PostgreSQL