Php / PostgreSQL için adodb kullanma, sonra ekleme satır kimliği dönmek

3 Cevap php

Ben ADODB ve Postgresql kullanıyorum. Ben bir satır eklediğinizde, bu SERİ kullanarak Kimlik alanını artırır.

Sağ ekleme sonra yeni oluşturulan kimlik numarası dönmek mümkün mü?

3 Cevap

INSERT INSERT-sorguda İADE bir SELECT ve kullanım olarak aynı davranın:

Id İADE foo (bar) VALUES ('Doe') INSERT INTO;

Sonucunu almak ve bitirdiniz. Versiyon 8.2 beri çalışıyor

Bu kod güzel çalışıyor:

$insertId = $adodb->getOne("INSERT INTO test (str) values ('test') RETURNING id");

Insert_ID() in adodb, boş bir değer döndürür ya da bazı durumlarda bu 0 döndürür.

postgresql üzerinde çalıştığım 9.1 sürümünde.

$_sql = 'INSERT INTO '.$_table.' (';
$_sql .= implode(', ',$arr_fld_names);
$_sql .= ") VALUES ('";
$_sql .= implode("', '",$arr_fld_values);
$_sql .= "')";

if ($echo){
    echo $_sql;
}

$_return = $this->Execute($_sql);
$this->mLastInsertedId = $this->mConn->Insert_ID(); // Keep track of the last inserted ID.

Edit: I have added a dirty way:

$_sql = 'INSERT INTO '.$_table.' (';
$_sql .= implode(', ',$arr_fld_names);
$_sql .= ") VALUES ('";
$_sql .= implode("', '",$arr_fld_values);
$_sql .= "') RETURNING id";

if ($echo){
    echo $_sql;
}

$_return = $this->Execute($_sql);
preg_match_all('/([\d]+)/', $_return, $ret_val);
$this->mLastInsertedId = $ret_val[0][0]; // Keep track of the last inserted ID.