2013-05-30 117 views
0

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

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

我的好友用户在我的桌子上有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']; 
} 

回答

1

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

你可能可以在一个查询中做到这一点,但为了更好的可读性,我建议在两个中进行。如果第一个查询成功执行,但第二个查询不成功,那么我还建议通过事务来完成它,但您希望将其还原。

PHP + MySQL transactions examples

+0

谢谢@JoseVega我认为这就是我所困惑的一切,无论它是否可以在1个查询中完成 – Liam

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

短版 - 他们确保无论您所有的疑问都执行succefully,或无。

相关问题