我LAST_INSERT_ID()在获取autoincrement主键列的最后一个id时尝试使用但是我得到了EOF异常:
function add($tab) {
$champs= "";
$value = "";
$separateur ="";
$tab["commande_date"] = convertDateFormat5($tab["commande_date"]);
foreach ($tab as $k => $v){
if ($k == "salle_code" || $k == "table_code")
continue;
$champs .= $separateur . $k;
$value .= $separateur . "'" . $v . "'";
$separateur = ",";
}
$champs = '('.$champs.')';
$value = '('.$value.')';
$sSQL = "
INSERT INTO Commande $champs
VALUES $value
";
$query = new Query($sSQL,$this->getDI());
$ret = $query->execute();
$sSQL = "SELECT LAST_INSERT_ID() as last_id";
$queryId = new Query($sSQL,$this->getDI());
return $queryId->execute();
}
Run Code Online (Sandbox Code Playgroud)
那么如何获得最后一个id Phalcon?
Jes*_*e Q 12
你处理它的方式是相当反MVC,你在桌面上留下了很多Phalcon功能.您应该有一个名为Commande的数据库模型,应该创建类似于:
$comande = new Commande();
Run Code Online (Sandbox Code Playgroud)
那么您可以分配如下值:
$comande->field1 = "hello";
$comande->adifferentfield = "world";
...
Run Code Online (Sandbox Code Playgroud)
然后你会跟着它:
$comande->save(); //yes I am aware we should test for success
Run Code Online (Sandbox Code Playgroud)
然后,您可以访问您的关键字段,该字段将自动填充,例如:
print $comande->id;
Run Code Online (Sandbox Code Playgroud)
你错过了许多错误处理和验证,就像你一样.
小智 5
$yourModel = new YourModel();
$yourModel->save() // Or create();
$newId = $yourModel->getWriteConnection()->lastInsertId();
Run Code Online (Sandbox Code Playgroud)
我觉得这样比较容易.希望它有用.