从INSERT语句获取自动递增的值并将其分配给PHP

时间:2014-01-27 10:33:48

标签: oracle zend-framework

我正在使用Zend框架和Oracle,下面是我的save()函数

public function save()
{

  $time = strtotime($_POST['DeliveryDate']);
  $deliveryDate = date('d-M-Y',$time);

  try{
  $result = '';
  $dml = "INSERT INTO NOBL_TEC_EFT(SNO_PK, ITEM, ITEM_TYPE, QUANTITY, UNIT_PRICE, NEED_BY_DATE, SITE, DELIVER_TO_LOCATION, AFE, TASK, REQUESTOR, ATTRIBUTE1, ATTRIBUTE2) VALUES (Sno_seq.nextval, '".$_POST['Item']."', '".$_POST['ItemType']."', ".(int)$_POST['Quantity'].", ".(int)$_POST['TotalPrice'].", '".$deliveryDate ."', '".$_POST['Site']."', '".$_POST['DeliverToLoc']."', '".$_POST['Afe']."', 'Task', '".$_POST['Requestor']."', '".$_POST['CodeOne']."', '".$_POST['CodeTwo']."')";

  $query = Application_Model_DbTable_Eftrqsthead::getDefaultAdapter();
  // echo $dml;
  $query = $query->query($dml);

      if($query){
        return true;
      }else{
        return false;
      }

  }catch(Exception $e){
      echo $e->getMessage();
  }

}

在我的INSERT语句中,我将SNO_PK作为自动递增值插入,我想在这里做的是我想从该INSERT语句中获取SNO_PK值并将其分配给PHP变量,然后返回它。我是Oracle新手,任何帮助都将不胜感激,谢谢。

我看过RETURNING子句,但在我的情况下不明白如何使用它。

2 个答案:

答案 0 :(得分:0)

检查get_class_methods($query),您会发现$query->lastInsertId();之类的内容。

PS。注意如何将变量放入SQL中。 SQLInjection的简短方法;)

答案 1 :(得分:0)

很简单,当你执行查询时,突然你会得到它的最后一个(递增值)。我已经实现了你的代码。

$query = Application_Model_DbTable_Eftrqsthead::getDefaultAdapter();
  // echo $dml;
  $query = $query->query($dml);

      if($query){
        echo $query;
        return true;
      }else{
        return false;
      }

  }catch(Exception $e){
      echo $e->getMessage();
  }

}