我正在尝试编写一个php函数,它将把值放到两个不同的表中,但它不起作用。我该怎么办?
public function AddKursplanering($kursBudgetId, $momentId, $momTypID, $pId, $rollId, $tid, $utfall)
{
if($stmt = $this->m_database->GetPrepareStatement(" INSERT INTO Kursmoment(KBID, MomentID, MomTypID)
VALUES(:kursBudgetId, :momentId, :momTypID)
INSERT INTO Uppgift (KMID, PID, RollID, Tid, Utfall)
VALUES (@@IDENTITY, :pId, :rollId, :tid, :utfall)"))
{
$stmt->bindValue(':kursBudgetId', $kursBudgetId,PDO::PARAM_INT);
$stmt->bindValue(':momentId', $momentId,PDO::PARAM_INT);
$stmt->bindValue(':momTypID', $momTypID,PDO::PARAM_INT);
$stmt->bindValue(':pId', $pId,PDO::PARAM_INT);
$stmt->bindValue(':rollId', $rollId,PDO::PARAM_INT);
$stmt->bindValue(':tid', $tid,PDO::PARAM_INT);
$stmt->bindValue(':utfall', $utfall,PDO::PARAM_INT);
if($stmt->execute())
{
$stmt->CloseCursor();
return true;
}
return false;
}
}
答案 0 :(得分:0)
现在,这实际上应该有效,但使用SCOPE_IDENTITY()
代替@@IDENTITY
,如果涉及触发器,可能会返回无关的数字。
另外,考虑使用参数将这样的逻辑封装在存储过程中,这样就可以调用同时执行两个插入的单个proc(基本上是相同的代码)
答案 1 :(得分:0)
在不知道上面查询的错误消息的情况下,您需要在语句之间使用分号。没有它,它将被解释为一个查询而不是两个。
if($stmt = $this->m_database->GetPrepareStatement("
INSERT INTO Kursmoment(KBID, MomentID, MomTypID)
VALUES(:kursBudgetId, :momentId, :momTypID);
INSERT INTO Uppgift (KMID, PID, RollID, Tid, Utfall)
VALUES (@@IDENTITY, :pId, :rollId, :tid, :utfall)"))