2013-05-30 118 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,或無。

相關問題