代码之家  ›  专栏  ›  技术社区  ›  Jeff Winkworth

oci_bind_by_name返回截断值

  •  6
  • Jeff Winkworth  · 技术社区  · 16 年前

    当我将一行插入到一个包含1000多个条目的表中,并尝试返回行ID(无论是来自自动递增触发器/seq,还是在插入语句中手动设置值)时,我得到一个截断值:

    $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;
    

    此代码正确执行,值正确存储在数据库中。然而,价值 $theID

    我运行的是PHP 5.2.6和Oracle 10.1

    1 回复  |  直到 13 年前
        1
  •  10
  •   Jeff Winkworth    16 年前

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

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