此代码适用于更新行,但我希望RETURN
更新行ID。请让我知道我该怎么做。
static function editProject($arr)
{
foreach ($arr as $key => $value) {
$$key = $value;
}
$db = new DatabaseConnection();
$dbh = $db->getDBH();
$sql = "UPDATE Project SET Job_Name='$JobName',Job_Number='$JobNumber',Location='$Location',
Project_SupervisorID='$ProjectSupervisorID',Project_ManagerID='$ProjectManagerID',Notes='$Notes',Category='$Category'
WHERE ID='$ID'";
$pdo = $dbh->query($sql);
$db->disconnect();
return $pdo->rowCount(); // INSTEAD of ROW COUNT RETURN I WANT TO RETURN ID here
}
答案 0 :(得分:1)
与insert
update
不同,您已知道要更新的行的id
。在您的代码中,它是$ID
所以只需执行
return $ID;
如果您正在进行插入,则pdo
函数将为http://php.net/manual/en/pdo.lastinsertid.php。
使用PDO
时,您还应该使用参数化查询和预准备语句。 http://php.net/manual/en/pdo.prepared-statements.php
粗略参数化版本:
$sql = "UPDATE Project
SET Job_Name=?,
Job_Number=?,
Location=?,
Project_SupervisorID=?,
Project_ManagerID=?,
Notes=?,
Category=?
WHERE ID=?";
$pdo = $dbh->prepare($sql);
$pdo->execute(array($JobName, $JobNumber, $Location, $ProjectSupervisorID, $ProjectManagerID, $Notes, $Category, $ID));
答案 1 :(得分:1)
在更新查询中,您已拥有ID,因此您无需知道上次更新的ID。
$ ID是您在案例中寻找的更新ID。所以你只需要返回$ ID。
return $ID;
否则,您可以使用以下PDO查询获取上次更新的ID。
$pdo = $dbh->lastInsertId();
// If the row exists AND a value is updated, with lastInsertId() you will get the ID of the updated row.
答案 2 :(得分:0)
这对我有用Edit编辑表,以便在修改行时自动跟踪。
ALTER TABLE Project
ADD lastmodified TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
然后,找出最后更新的行。
SELECT ID FROM Project ORDER BY lastmodified DESC LIMIT 1;
static function editProject($arr)
{
foreach ($arr as $key => $value) {
$$key = $value;
}
$db = new DatabaseConnection();
$dbh = $db->getDBH();
$sql = "UPDATE Project SET Job_Name='$JobName',Job_Number='$JobNumber',Location='$Location',
Project_SupervisorID='$ProjectSupervisorID',Project_ManagerID='$ProjectManagerID',Notes='$Notes',Category='$Category'
WHERE ID='$ID'";
$pdo = $dbh->query($sql);
$sql = "SELECT ID FROM Project ORDER BY lastmodified DESC LIMIT 1;";
$pdo = $dbh->query($sql);
$n = $pdo->fetch(PDO::FETCH_ASSOC);
$db->disconnect();
return $n['ID'];
}
答案 3 :(得分:-1)
您可以使用此mysql_insert_id()
返回先前INSERT或UPDATE语句为AUTO_INCREMENT列生成的值。在对包含AUTO_INCREMENT字段的表执行INSERT语句或使用INSERT或UPDATE设置具有LAST_INSERT_ID(expr)的列值后使用此函数。
Futhur你可以阅读上面提到的链接