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

PHP:oci_bind_by_name og tidsstempelfelt resulterer i ORA-01461:kan kun binde en LONG værdi til indsættelse i en LONG kolonne

Fra (http://www.php .net/manual/en/function.oci-bind-by-name.php#92334 ) :

Nogle gange får du fejlen "ORA-01461:kan kun binde en LONG-værdi til at indsætte i en LONG kolonne". Denne fejl er meget misvisende, især når du ikke har nogen LANGE kolonner eller LANGE værdier.

Fra min test ser det ud til, at denne fejl kan opstå, når værdien af ​​en bundet variabel overstiger den tildelte længde.

For at undgå denne fejl skal du sørge for at angive længder, når du binder varchars, f.eks.

<?php
    oci_bind_by_name($stmt,':string',$string, 256);
?>

Og for numeriske brugere brug standardlængden (-1), men fortæl oracle, at det er et heltal, f.eks.

<?php
    oci_bind_by_name($stmt,':num',$num, -1, SQLT_INT);
?>



  1. Problemer med at få adgang til MySQL fra Java

  2. Forstå pdo mysql transaktioner

  3. PHP udløbsdato

  4. Oracle:LANG eller CLOB?