2013-04-04 37 views
0

所以,我有兩個腳本運行在相同的分貝,但每個都有自己的表(如用戶,帖子等等),他們有點系統。如何在添加到另一個表時從一個表中減去一個值?

現在,我想要做的是使發送點從一個到另一個。 我已經創建了一個名稱和要填充的點的簡單表單,並且比提交時發送到另一個可處理信息的頁面要遠離用戶(將檢查會話)併發送給它到給定的名字(在另一個腳本中註冊)。

好的,當它處理的點被拿走(或者如果他們沒有足夠的積分給出「不夠分」的錯誤),但積分不記入其他帳戶。 有沒有可能解決這個問題?

這裏去的代碼片段:

// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup('mods/points'); 
$pointst1 = request_var('pointst', 0); 
$bsname1 = request_var('bsname', 0); 

if ($user->data['user_points'] < $pointst1){ 
echo "<b>You don't have enough points</b>"; 
} 

else { 
remove_points($user->data['user_id'], $pointst1); 
mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'"); 
echo "<b>Points tranferred!</b>"; 
}; 

?> 
+0

不要在新的應用程序中使用'mysql_query',請使用[PDO](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-using -phps-pdo-for-database-access /)。另外,請仔細閱讀[適當的SQL轉義](http://bobby-tables.com/),然後再做一些嚴重的傷害。 – tadman 2013-04-04 20:40:25

+0

如果只有這些,您應該按名稱查找第二個用戶,然後在更新查詢中使用用戶標識而不是名稱。您還應該將您的$ pointst1包裝在intval()中以強制執行一個數字,然後在更新之前檢查零或負數。 – Revent 2013-04-04 21:01:28

+0

如果你在每次請求後調用它,那麼'mysql_error'是什麼意思? http://php.net/manual/en/function.mysql-error.php – didierc 2013-04-04 21:06:52

回答

0

一對夫婦的事情。

首先,我建議您查看處理SQL提交的網站。這將有助於確保您不會從一位用戶中刪除積分,並且不會將這些積分添加到其他用戶。您也可以在當前的代碼示例

http://php.net/manual/en/mysqlnd-ms.transaction.php

其次發生,它好像這部分傳遞PHP變量作爲文本

的mysql_query(「更新用戶設定點=(點+ $ pointst1)WHERE name ='$ bsname'「); 回聲 「點tranferred!」

您可能希望將其更改爲

mysql_query("UPDATE users SET points = (points + {$pointst1}) WHERE name = {$bsname}"); 
echo "<b>Points tranferred!</b>" 

我不是一個PHP程序員,所以你可以在這裏查看我的邏輯: http://php.net/manual/en/language.operators.string.php

希望它有幫助

+0

使用交易的好建議。我同意! – Revent 2013-04-04 21:02:35

+0

我只是在迴應你寫的內容。你是對的 – 2013-04-04 21:08:21

+0

謝謝你的答案,似乎沒有什麼工作這個壽。我可能會嘗試一些餅乾和頁面轉發,看看我得到了什麼。 – user2246644 2013-04-07 23:49:35

相關問題