2009-11-10 16 views
6

Bir tabloya 1000'den fazla giriş içeren bir satır eklediğimde ve satır kimliğini döndürme girişiminde bulunduğumda (autoincrement tetikleyici/seq'den mi yoksa ekleme ifadesinde el ile değeri ayarlamadan),oci_bind_by_name GERİ DÖNÜŞTÜRME INTO kesim değeri

$db = OCILogon(DATABASE_LOGIN, DATABASE_PASSWORD, DATABASE_NAME); 

$mysqldate = date('Y/m/d G:i:s'); 
$db_vid_id = 748; 
$authorID = 310; 
$typeID = 2; 
$timecode = 47; 
$shortDescrip = "hello world"; 


$query = "INSERT INTO TESTTHOUSAND (ID, VIDEO_ID, AUTHOR_ID, TYPE_ID, 
      DATE_CREATED, TIMECODE, SHORT_DESCRIPTION, APPROVED, IS_PUBLIC) 
      VALUES(4067, :videoID, :authorID, :typeID, TO_DATE('$mysqldate','yyyy/mm/dd HH24:MI:SS'), 
      :timecode, :shortDescrip, 0, 0) 
      RETURNING ID INTO :id"; 
$stmt = oci_parse($db, $query); 
oci_bind_by_name($stmt, ':videoID', $db_vid_id); 
oci_bind_by_name($stmt, ':authorID', $authorID); 
oci_bind_by_name($stmt, ':typeID', $typeID); 
oci_bind_by_name($stmt, ':timecode', $timecode); 
oci_bind_by_name($stmt, ':shortDescrip', $shortDescrip); 
oci_bind_by_name($stmt, ':id', $theID); 
oci_execute($stmt); 
oci_free_statement($stmt); 
oci_commit($db); 
oci_close($db); 

echo $theID; 

Bu kod doğru çalıştırır ve değerleri doğru veri tabanında saklanır: bir tepe bölümü kesik bir değer elde. Ancak, $theID değeri değil, 4067.

ben çalıştırıyorum PHP 5.2.6 ve Oracle 10,1

406 Herkes önce bu karşılaştı mı?

cevap

10

biraz daha etrafında kazma ve bu bir SQLT_INT olduğunu belirtmek gerekir görünür yapmış:

oci_bind_by_name($stmt, ':id', $annotationID, -1, SQLT_INT); 

http://www.php.net/manual/en/function.oci-bind-by-name.php#92334 itibaren Rakamsal varsayılan uzunluğunu kullanmak için (-1) fakat cevabın izlenmesi için oracle'ye bir tamsayının

+0

+ 1'e söyleyin. – DCookie

İlgili konular