我在获取自动增量主键列的最后一个ID时尝试使用LAST_INSERT_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();
}
那么如何使用Phalcon
获取最后一个ID?
答案 0 :(得分:12)
你处理这个问题的方式是相当反MVC,你在桌面上留下了很多Phalcon功能。您应该有一个名为Commande的数据库模型,应该创建类似于:
的模型$comande->field1 = "hello";
$comande->adifferentfield = "world";
...
然后你可以分配如下的值:
$comande->save(); //yes I am aware we should test for success
然后你会跟着它:
print $comande->id;
然后您可以访问您的关键字段,该字段将自动填充,如:
each
你错过了许多错误处理和验证,就像你一样。
答案 1 :(得分:5)
$yourModel = new YourModel();
$yourModel->save() // Or create();
$newId = $yourModel->getWriteConnection()->lastInsertId();
我觉得这样比较容易。希望它有所帮助。
答案 2 :(得分:3)
您可以使用lastInsertId()
功能
$sSQL = "INSERT INTO Commande $champs VALUES $value ";
$query = new Query($sSQL,$this->getDI());
$ret = $query->execute();
$lastId = $query->lastInsertId();
<强>更新强>
以下是插入和取回lastinsert id的示例。
$success = $connection->insert(
"robots",
array("Astro Boy", 1952),
array("name", "year")
);
//Getting the generated id
$id = $connection->lastInsertId();
我认为这可能会对你有帮助。