我正在使用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子句,但在我的情况下不明白如何使用它。
答案 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();
}
}