0

我试图弄清楚如何使用 PDO 更新我的表 - 我需要同时更新 2 条记录,只是我不确定它是如何工作的。

我有我的会话用户和我的“好友用户”。

我的好友用户在我的表中将有 10 个积分左右,当其他用户与他成为好友时,他可以提供 X 积分。

// $uid is my logged in session user
// $follow_id is the id of the person were trying to befriend

// 我被整个过程弄糊涂了,我要写 2 个查询吗?1 减去迷惑用户的信用,然后将信用添加到当前会话用户列?

$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'];
} 
4

2 回答 2

1

简短的回答是,是的,您需要编写两个查询,一个用于减去,另一个用于添加。

您可能可以在一个查询中执行此操作,但我建议您在两个查询中执行此操作以提高可读性。我还建议通过事务执行此操作,如果第一个查询成功执行但第二个查询没有执行,则您需要回滚它。

PHP + MySQL 事务示例

于 2013-05-30T13:05:06.263 回答
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

短版- 它们确保您的所有查询都成功执行,或者没有。

于 2013-05-30T13:12:40.357 回答