我试图弄清楚如何使用PDO更新我的表 - 我需要同时更新2条记录,但我不确定这是如何工作的。
我有会话用户和我的“友好用户”。
我的朋友将在我的桌子上获得10个学分左右,并且当他们与他成为朋友时,他可以为其他用户提供X学分。
// $uid is my logged in session user
// $follow_id is the id of the person were trying to befriend
//我对这个问题的整个过程感到困惑吗? 1,减少来自befirended用户的信用,然后将信用添加到当前会话用户列?
$upd_stmt = $conn->prepare('SELECT * FROM users WHERE user_id=? ');
$upd_stmt->bindParam(1, $uid, PDO::PARAM_INT);
$upd_stmt->execute();
while( $row = $upd_stmt->fetch(PDO::FETCH_ASSOC) ) {
$row['credits_offered'];
}
答案 0 :(得分:1)
简短的回答是,是的,您需要编写两个查询,一个要减去,另一个要添加。
您可以在一个查询中执行此操作,但我建议您在两个查询中执行此操作以获得更好的可读性。我还建议通过事务来完成它,如果第一个查询成功执行但第二个查询没有成功,你会想要回滚它。
答案 1 :(得分:1)
这是交易的目的。您不需要在一个查询中执行此操作以确保它们都已成功执行。
$dbh->beginTransaction();
$addQuery = "UPDATE ...";
$subtractQuery = "UPDATE ...";
$sth = $dbh->exec($addQuery);
$sth = $dbh->exec($subtractQuery);
$dbh->commit(); // or $dbh->rollback();
在此处详细了解交易:http://en.wikipedia.org/wiki/Database_transaction
短版 - 它们确保您的所有查询都成功执行,或者没有。