Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PHP:oci_bind_by_name und timestamp-Feld führt zu ORA-01461:kann einen LONG-Wert nur zum Einfügen in eine LONG-Spalte binden

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

Manchmal erhalten Sie den Fehler "ORA-01461:can bind a LONG value only for insert into a LONG column". Dieser Fehler ist sehr irreführend, besonders wenn Sie keine LONG-Spalten oder LONG-Werte haben.

Aus meinen Tests geht hervor, dass dieser Fehler verursacht werden kann, wenn der Wert einer gebundenen Variablen die zugewiesene Länge überschreitet.

Um diesen Fehler zu vermeiden, stellen Sie sicher, dass Sie beim Binden von Varchars Längen angeben, z.

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

Und für Zahlen verwenden Sie die Standardlänge (-1), aber teilen Sie Oracle mit, dass es sich um eine Ganzzahl handelt, z.

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